Spring Cloud微服务基础与应用 演讲教学课件.pptx

上传人(卖家):晟晟文业 文档编号:5205069 上传时间:2023-02-17 格式:PPTX 页数:37 大小:3.93MB
下载 相关 举报
Spring Cloud微服务基础与应用 演讲教学课件.pptx_第1页
第1页 / 共37页
Spring Cloud微服务基础与应用 演讲教学课件.pptx_第2页
第2页 / 共37页
Spring Cloud微服务基础与应用 演讲教学课件.pptx_第3页
第3页 / 共37页
Spring Cloud微服务基础与应用 演讲教学课件.pptx_第4页
第4页 / 共37页
Spring Cloud微服务基础与应用 演讲教学课件.pptx_第5页
第5页 / 共37页
点击查看更多>>
资源描述

1、欢迎使用微服务Spring CloudSpring Cloud简介SpringCloud组件理赔渠道平台使用问题与讨论PARTXXXXXX公司Spring Cloud简介ONE”微”即是小由一系列小服务组成微服务简介独立运行每个服务运行于自己的独立进程业务建模围绕着业务功能进行建模独立部署每个服务独立部署5分散式管理最低限度的集中管理微服务更小更强更快微服务的特征服务即组件每个服务对一个业务负责关注业务逻辑分散式管理服务可以独立部署,更清晰的模块边界,每个服务提供方可以专注发布 API,隐藏实现细节和版本。例如:理赔服务 保费试算服务 承保服务 核保服务 支付服务 所有微服务调用使用统一协议,

2、微服务团队只需要关注如何将输入转化为输出的逻辑,而不需要考虑网络层实现细节。每个微服务团队有充分自由选择自己团队熟悉的编程语言、数据库和其他中间件等技术栈。Spring Cloud简介l 利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。l Spring Cloud是对Netflix的多个开源组件进一步的封装而成,同时又实现了和云端平台,和Spring Boot开发框架很好的集成。l Spring Cloud是一个相对比较新的微服务框架,201

3、6年才推出1.0的release版本.虽然Spring Cloud时间最短,但是相比Dubbo等RPC框架,Spring Cloud提供的全套的分布式系统解决方案。Spring Cloud是一系列框架的有序集合Spring Cloud优势架构完整度它的子项目涵盖了所有实现布式系统所需要的基础软件设施社区活跃度选择一个开源框架,社区的活跃度是我们极为关注的一个要点。社区越活跃,解决问题的速度越快,框架也会越来越完善,不然当我们碰到问题,就不得不自己解决。开发部署极其简单基于Spring Boot,使得开发部署极其简单(加依赖,加注解,就能运行了)与dubbo相比从框架的完整度来看,Dubbo只是

4、实现了服务治理(注册,发现等),而Spring Cloud下面有很多个子项目覆盖了微服务架构下的方方面面,服务治理只是其中的一个方面Spring Cloud架构图Spring Cloud使用 一 4.0.0 Cloud test 0.0.1-SNAPSHOT org.springframework.boot spring-boot-starter-parent 1.3.0.RELEASE org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-maven-plugin org.s

5、pringframework springloaded 1.2.5.RELEASE l spring boot 的核心技术基于spring 4.x。l 环境说明 IDE:IntelliJ IDEA 2017.2.5 JDK:1.8 管理:mvn 3 服务器:内置tomcatl 创建一个maven项目 先在pom.xml中加入依赖的包(如右部分所示)l 创建一个Application类 具体见下页Spring Cloud使用 二ControllerEnableSwagger2Doc SpringBootApplicationEnableDiscoveryClientEnableFeignClie

6、nts/ImportResource(locations=classpath:config/application-dubbon.xml)public class Application ResponseBody RequestMapping(value=/)public String location()return Hello World;/*param param args */public static void main(String args)SpringApplication.run(Application.class,args);l 代码结构如上图所示;l 代码实现如右图所示;

7、l SpringBootApplication=Configuration +EnableAutoConfiguration+ComponentScanl Configuration,ComponentSca这俩注解语法是spring框架中的,起步于spring 3.xl EnableAutoConfiguration是spring boot语法,表示自动配置。PARTXXXXXX公司Spring Cloud组件TWOSpring Cloud组件 一Spring Cloud Config配置管理开发工具包,可以让你把配置放到远程服务器,目前支持本地存储、Git以及Subversion。Spri

8、ng Cloud Bus事件、消息总线,用于在集群(例如,配置变化事件)中传播状态变化,可与Spring Cloud Config联合实现热部署。Netflix Hystrix容错管理工具,旨在通过控制服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力。Spring Cloud for Cloud Foundry通过Oauth2协议绑定服务到CloudFoundry,CloudFoundry是VMware推出的开源PaaS云平台。Spring Cloud Netflix针对多种Netflix组件提供的开发工具包,其中包括Eureka、Hystrix、Zuul、Archaius等。Net

9、flix Eureka云端负载均衡,一个基于 REST 的服务,用于定位服务,以实现云端的负载均衡和中间层服务器的故障转移。Netflix Zuul边缘服务工具,是提供动态路由,监控,弹性,安全等的边缘服务。Netflix Archaius配置管理API,包含一系列配置管理API,提供动态类型化属性、线程安全配置操作、轮询框架、回调机制等功能。Spring Cloud组件 二详见:xxxx经验总结246531Spring Cloud Data Flow:大数据操作工具,通过命令行方式操作数据流。Spring Cloud Security:安全工具包,为你的应用程序添加安全控制,主要是指OAut

10、h2。Spring Cloud Consul:封装了Consul操作,consul是一个服务发现与配置工具,与Docker容器可以无缝集成。Spring Cloud Zookeeper:操作Zookeeper的工具包,用于使用zookeeper方式的服务注册和发现。Spring Cloud Stream:数据流操作开发包,封装了与Redis,Rabbit、Kafka等发送接收消息。Spring Cloud CLI:基于 Spring Boot CLI,可以让你以命令行方式快速建立云组件。7Spring Cloud Sleuth:日志收集工具包,封装了Dapper,Zipkin和HTrace操作

11、。服务发现Netflix EurekaSpringCloud分布式开发五大神兽客服端负载均衡Netflix Ribbon断路器Netflix Hystrix服务网关Netflix Zuul分布式配置Spring Cloud ConfigEureka服务注册123Register:服务注册当Eureka客户端向Eureka Server注册时,它提供自身的元数据,比如IP地址、端口,运行状况指示符URL,主页等。Renew:服务续约 Eureka客户会每隔30秒发送一次心跳来续约。通过续约来告知Eureka Server该Eureka客户仍然存在,没有出现问题。正常情况下,如果Eureka Se

12、rver在90秒没有收到Eureka客户的续约,它会将实例从其注册表中删除。Fetch Registries:获取注册列表信息Eureka客户端从服务器获取注册表信息,并将其缓存在本地。客户端会使用该信息查找其他服务,从而进行远程调用。该注册列表信息定期(每30秒钟)更新一次。每次返回注册列表信息可能与Eureka客户端的缓存信息不同,Eureka客户端自动处理。Cancel:服务下线Eureka客户端在程序关闭时向Eureka服务器发送取消请求。发送请求后,该客户端实例信息将从服务器的实例注册表中删除。该下线请求不会自动完成,它需要调用以下内容:DiscoveryManager.getIns

13、tance().shutdownComponent();5Eviction 服务剔除在默认的情况下,当Eureka客户端连续90秒没有向Eureka服务器发送服务续约,即心跳,Eureka服务器会将该服务实例从服务注册列表删除,即服务剔除。Eureka的高级架构图Ribbon负载均衡123Ribbon的工作 第一步有限选择Eureka Server,它优先选择在同一个Zone且负载较少的Server,第二步在根据用户指定的策略,在从Server取到的服务注册列表中选择一个地址。其中Ribbon提供了多重策略,例如轮询round robin、随机Random、根据相应时间加权等。负载均衡策略 l

14、 简单轮询负载均衡l 加权响应时间负载均衡l 区域感知轮询负载均衡l 随机负载均衡Ribbon中还包括以下功能:l 易于与服务发现组件(比如Netflix的Eureka)集成l 使用Archaius完成运行时配置l 使用JMX暴露运维指标,使用Servo发布l 多种可插拔的序列化选择Ribbon架构图Eureka Server服务消费者服务提供者1服务提供者2服务提供者3Ribbon注册注册注册注册可用服务列表负载均衡请求Hystrix熔断器123服务雪崩效应形成的原因 l服务提供者不可用l重试加大流量l服务调用者不可用Hystrix的设计原则包括:l资源隔离l熔断器l命令模式熔断器的概念熔断

15、器即断路器,断路器(Cricuit Breaker)是一种能够在远程服务不可用时自动熔断(打开开关),并在远程服务恢复时自动恢复(闭合开关)的设施,Spring Cloud通过Netflix的Hystrix组件提供断路器、资源隔离与自我修复功能。Hystrix架构图ZUUL网关123验证与安全保障 识别面向各类资源的验证要求并拒绝那些与要求不符的请求。审查与监控在边缘位置追踪有意义数据及统计结果,从而为我们带来准确的生产状态结论。动态路由以动态方式根据需要将请求路由至不同后端集群处。ZUUL架构图4压力测试逐渐增加指向集群的负载流量,从而计算性能水平。5负载分配为每一种负载类型分配对应容量,并

16、弃用超出限定值的请求。6静态响应处理在边缘位置直接建立部分响应,从而避免其流入内部集群。7多区域弹性跨越AWS区域进行请求路由,旨在实现ELB使用多样化并保证边缘位置与使用者尽可能接近。Spring Cloud Config配置中心Spring Cloud Config 架构图Spring Cloud Config提供基于以下3个维度的配置管理:应用这个比较好理解,每个配置都是属于某一个应用的环境每个配置都是区分环境的,如dev,test,uat,prod等版本l 这个可能是一般的配置中心所缺乏的,就是对同一份配置的不同版本管理l Spring Cloud Config提供版本的支持,也就是说

17、对于一个应用的不同部署实例,可以从服务端获取到不同版本的配置,这对于一些特殊场景如:灰度发布,A/B测试等提供了很好的支持PARTXXXXXX公司理赔渠道平台使用THR非车理赔渠道平台介绍 非车理赔渠道平台是客户端与非车理赔系统之间的桥梁,系统接收到渠道的数据后,经过解密、报文重组,然后调用非车理赔服务,进行保存或者查询等动作。渠道平台意在减轻核心服务的压力,增加核心服务的安全性,减少核心人员的开发工作,同时更好的支持理赔服务。非车理赔系统采用最新的Spring Cloud微服务架构,增强系统的灵活性,降低部署和开发难度。非车理赔渠道平台渠道平台总体架构图接口服务1接口服务2ZUUL1NGIX

18、APPPCZUUL2理赔服务微信Eureka1Eureka2渠道平台渠道平台总体架构描述Eureka两台ZUUL,两台主程序都注册在两台Eureka服务上,并且两台Eureka相互注册。主程序主程序即渠道平台接口服务,收到ZUUL的请求后,调用理赔系统服务获取相关数据,并返回客户端。NGIX客户端访问NGIX,NGIX根据两台ZUUL的压力情况,采用NGIX负载均衡策略,访问压力最小的ZUUL服务。ZUULZUUL是渠道平台的入口,接收到NGIX转来的请求后,ZUUL根据两台主程序服务的压力情况,采用Ribbon负载均衡策略,访问压力最小的主程序。EURAKE配置配置结构server:serv

19、er:port:port:7070 session:session:timeout:timeout:100 tomcat:tomcat:uri-encoding:uri-encoding:UTF-8spring:spring:application:application:name:name:eureka-server output:output:ansi:ansi:enabled:enabled:detect config:config:location:location:config profiles:profiles:include:include:admin-testlogging:l

20、ogging:path:path:logs pattern:pattern:level:level:debug file:file:$logging.pathlogging.path/eureak.logeureka:eureka:server:server:enable-self-preservation:enable-self-preservation:false#关闭自我保护 instance:instance:prefer-ip-address:prefer-ip-address:true metadata-map:metadata-map:cluster:cluster:admin-

21、server management.context-path:management.context-path:$management.context-pathmanagement.context-path health-check-url-path:health-check-url-path:$management.context-pathmanagement.context-path/health client:client:service-url:service-url:defaultZone:defaultZone:http:/10.0.0.173:7070/eureka,http:/1

22、0.0.0.171:7070/eureka配置示例ZUUL配置 一server:server:connection-timeout:connection-timeout:700000 session:session:timeout:timeout:700000spring:spring:cloud:cloud:loadbalancer:loadbalancer:retry:retry:enabled:enabled:false#关闭重试机制 data:data:cassandra:cassandra:read-timeout-millis:read-timeout-millis:700000#

23、理论上这里设置了false 下面的hystrix和Ribbon的重试都不起作用,为了防止错误,下面多做了配置,以免重试#60000 毫秒(分钟)请求超时熔断hystrix:hystrix:metrics:metrics:enabled:enabled:true command:command:default:default:execution:execution:isolation:isolation:strategy:strategy:THREAD thread:thread:timeroutInMilliseconds:timeroutInMilliseconds:700000#断路器的超

24、时时间,断路器的超时时间设置时间比Ribbon的超时时间短,防止重试。timeout:timeout:enabled:enabled:false threadpool:threadpool:default:default:coreSize:coreSize:2000 maxQueueSize:maxQueueSize:2000 queueSizeRejectionThreshold:queueSizeRejectionThreshold:2000ribbon:ribbon:IsSecured:IsSecured:true ConnectionTimeout:ConnectionTimeout:

25、6000000#连接超时时间 ReadTimeout:ReadTimeout:6000000 OkToRetryOnAllOperations:OkToRetryOnAllOperations:false#关闭所有操作请求都进行重试 MaxAutoRetriesNextServer:MaxAutoRetriesNextServer:0#尝试更换0次 MaxAutoRetries:MaxAutoRetries:0#对当前实例的重试次数 eureka:eureka:enabled:enabled:trueZUUL配置 二zuul:zuul:max:max:host:host:connections

26、:connections:5000 semaphore:semaphore:max-semaphores:max-semaphores:10000#最大信号量 retryable:retryable:false#关闭重试机制,以免重复提交 ignoredServices:ignoredServices:*ribbon:ribbon:eager-load:eager-load:enabled:enabled:true host:host:connect-timeout-millis:connect-timeout-millis:100000 socket-timeout-millis:socke

27、t-timeout-millis:6000000 maxTotalConnections:maxTotalConnections:200000#(总连接数)默认200 maxPerRouteConnections:maxPerRouteConnections:10000#路由连接数 默认 20 max-per-route-connections:max-per-route-connections:10000#扩大这个线程池的容量 max-total-connections:max-total-connections:10000#扩大这个线程池的容量 add-proxy-headers:add-

28、proxy-headers:true add-host-header:add-host-header:true strip-prefix:strip-prefix:false ignoredPatterns:ignoredPatterns:/*/management-context-path/*routes:routes:interfaceChannel:interfaceChannel:path:path:/interfaceChannel/*serviceId:serviceId:claims-channel-server carchannel:carchannel:path:path:/

29、carchannel/*serviceId:serviceId:carchannel-service tab-a:tab-a:path:path:/tab-a/*serviceId:serviceId:tab-a-serviceZUUL的使用安心保险将ZUUL定义为所有Spring Cloud应用的网关,所以其中不做个性化的实现,仅用来实现请求数据的转发。联测过程中,因为此配置问题,当报文大于10M,请求时间大于5分钟时,ZUUL报错:Caused by:.SocketTimeoutException:Read timed outserver.tomcat.max-http-post-size

30、请求报文大小限制配置,测试接口时,请求数据大于2M,若不配置会导致客户端直接收到500错误,无法进入主程序。ribbon.ReadTimeout:ReadTimeout:6000000主程序配置server.port=8080#端口号spring.application.name=claims-channel-server#服务命名spring.config.location=config#指定配置文件夹spring.profiles.include=redis-test,mysql-test,mybatis,swagger,logging-test,banner,eureka-test,fe

31、ign-test,admin#引入文件spring.http.multipart.max-file-size=50MB#单个文件大小限制spring.http.multipart.max-request-size=100MB#总上传数据大小限制server.connection-timeout=600000#连接超时#server.tomcat.max-http-post-sizeserver.tomcat.max-http-post-size=2097152000#请求数据大小 Byte#ZooKeeperdubbo.registry.address=10.0.0.16:2281#请求dub

32、bo的Zookper地址配置spring.freemarker.cache=falsespring.freemarker.request-context-attribute=requestmanagement.security.enabled=falseendpoints.health.sensitive=falseendpoints.info.enabled=trueribbon.IsSecured=trueribbon.ConnectionTimeout=600000ribbon.ReadTimeout=600000info.app.name=weminfo.app.version=1.0

33、.0info.build.artifactId=project.artifactIdinfo.build.version=Id=Name=u6D4Bu8BD5u6E20u9053image.pwd=000000l 主程序调用核心:dubbo调用+Feign调用。l 核心调用渠道平台:HTTP协议调用l 主程序调用渠道:Feign调用;l 程序参数配置,如右侧代码所示。组件使用-FeignFunctionalInterfaceFeignClient(name=feign-client,url=$feign-url.report-fegin-url,fallbackFactory=ReportFe

34、ginFallBack.class)public interface ReportFeginURL RequestMapping(value=ccentscs/services/nclmRpt,method=RequestMethod.POST)String nclmRpt(String nclmRpt);Componentpublic class ReportFeginFallBack extends FeignExceptionServer Autowired private LogInterfaceServer logServer;Override public ReportFeginU

35、RL create(Throwable throwable)String equalsException=super.methodReturn(throwable);return(String nclmRpt)-logServer.saveLoggerInFile(ConstantUtile.FeignType.REPORT_SUBMIT.getvalue(),equalsException);return ConstantUtile.FEGIN_CALL_BACK+_+equalsException;feign-url:feign-url:report-fegin-url:report-fe

36、gin-url:http:/10.0.0.10:8083#调用XXXX接口 evaluation-fegin-url:evaluation-fegin-url:http:/10.0.0.19:8080#调用XXXX接口 collect-upload-fegin-url:collect-upload-fegin-url:http:/10.0.0.19:8080#调用XXXX接口调用方法:将ReportFeginURL注入到逻辑类,如reportFeign;调用接口:reportFeign.nclmRpt(XXX);接收调用时的返回参数,则获取到返回报文。l 注入dubbo服务,如下:l 调用du

37、bbo接口中的方法photoService.QueryRptInfoClaim(XXX);l 获取dubbo接口返回数据。组件使用 调用Dubbo服务 调用方法:Autowiredprivate PhotoService photoService;组件使用-SwaggerApi(value=Report(报案接口),description=报案接口)RestControllerRequestMapping(report)public class ReportController ApiOperation(value=报案接口,notes=报案接口)RequestMapping(value=/r

38、ptSubmit,method=RequestMethod.POST)ResponseBody public String rptSubmit(HttpServletRequest request)throws BusinessException return 报案返回Test;使用方法:在Application中增加注解:EnableSwagger2Doc 如上述代码示例,在controller增加配置;访问地址:http:/ip:端口/appName/swagger-ui.html com.didispace spring-boot-starter-swagger 1.3.0.RELEAS

39、E在POM中添加Swagger引入:程序部署简述010203打包程序打包程序在pom所在文件夹运行mvn install命令,则开始运行打包命令,将程序打成jar包上传程序上传程序jarjar包包将打包好的jar包上传到服务器指定目录下,例如 /home/jboss目录启动程序启动程序若当前程序在进程中,则关闭已存在进程;进程关闭后,运行java jar命令启动程序;例如启动测试环境:java-jar zuul-0.0.1-SNAPSHOT.jar-spring.profiles.active=test&XXXXXX公司问题与讨论PARTFOUR针对Spring Cloud微服务,我们的问题:

40、当前比较流程的微服务框架有哪些?Spring Cloud与Dubbo对比?如何建立自己的微服务?问题列表问题讨论1.Spring Cloud:本文档主要介绍2.Dubbo:阿里推出,国内SOA框架集大成之作3.DubboX:当当团队基于dubbo升级的一个版本4.Motan:新浪微博开源的RPC框架5.Thrift:facebook开源的RPC框架问题讨论当前比较流程的微服务框架有哪些l 背景:Dubbo,是阿里巴巴服务化治理的核心框架,并被广泛应用于阿里巴巴集团的各成员站点。Spring Cloud,是Spring Source的产物,除了Spring Source之外,还有Pivotal和

41、Netfix是其强大的后盾与技术输出。l 社区活跃度 Dubbo的更新频率很低,而Spring Cloud的更新仍处于高速迭代的阶段。l 架构完整度 Dubbo只是实现了服务治理,而Spring Cloud下面有17个子项目(可能还会新增)分别覆盖了微服务架构下的方方面面,服务治理只是其中的一个方面,问题讨论Spring Cloud与Dubbo对比1.微服务划分粒度的大小:合理拆分业务结构2.组织层次性:不要出现胡乱依赖,循环依赖3.选择合适的微服务技术栈4.以最小的代价发布出第一个微服务5.总结并复制成功经验,建立起微服务交付的节奏问题讨论如何建立自己的微服务感谢您的聆听THANKS FOR WATCHING 欢迎使用PPT模板下载:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(Spring Cloud微服务基础与应用 演讲教学课件.pptx)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|