Spring Cloud微服务基础与应用.ppt

上传人:苏美尔 文档编号:9292625 上传时间:2021-02-15 格式:PPT 页数:37 大小:4.08MB
返回 下载 相关 举报
Spring Cloud微服务基础与应用.ppt_第1页
第1页 / 共37页
Spring Cloud微服务基础与应用.ppt_第2页
第2页 / 共37页
Spring Cloud微服务基础与应用.ppt_第3页
第3页 / 共37页
Spring Cloud微服务基础与应用.ppt_第4页
第4页 / 共37页
Spring Cloud微服务基础与应用.ppt_第5页
第5页 / 共37页
点击查看更多>>
资源描述

《Spring Cloud微服务基础与应用.ppt》由会员分享,可在线阅读,更多相关《Spring Cloud微服务基础与应用.ppt(37页珍藏版)》请在三一文库上搜索。

1、,XXXXXX,Spring Cloud,Spring Cloud简介,SpringCloud组件,理赔渠道平台使用,问题与讨论,PART,XXXXXX公司,Spring Cloud简介,ONE,微服务简介,5,微服务的特征,服务即组件,每个服务对一个业务负责,关注业务逻辑,分散式管理,服务可以独立部署,更清晰的模块边界,每个服务提供方可以专注发布 API,隐藏实现细节和版本。,例如: 理赔服务 保费试算服务 承保服务 核保服务 支付服务,所有微服务调用使用统一协议,微服务团队只需要关注如何将输入转化为输出的逻辑,而不需要考虑网络层实现细节。,每个微服务团队有充分自由选择自己团队熟悉的编程语言

2、、数据库和其他中间件等技术栈。,Spring Cloud简介,利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。 Spring Cloud是对Netflix的多个开源组件进一步的封装而成,同时又实现了和云端平台,和Spring Boot开发框架很好的集成。 Spring Cloud是一个相对比较新的微服务框架,2016年才推出1.0的release版本. 虽然Spring Cloud时间最短, 但是相比Dubbo等RPC框架, Spring C

3、loud提供的全套的分布式系统解决方案。,Spring Cloud是一系列框架的有序集合,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.sprin

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

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

6、ingBootApplication = Configuration +EnableAutoConfiguration +ComponentScan Configuration,ComponentSca这俩注解语法是spring框架中的,起步于spring 3.x EnableAutoConfiguration是spring boot语法,表示自动配置。,PART,XXXXXX公司,Spring Cloud组件,TWO,Spring Cloud组件 一,Spring Cloud组件 二,详见:https:/springcloud.cc/,2,4,6,5,3,1,Spring Cloud Dat

7、a Flow:大数据操作工具,通过命令行方式操作数据流。,Spring Cloud Security:安全工具包,为你的应用程序添加安全控制,主要是指OAuth2。,Spring Cloud Consul:封装了Consul操作,consul是一个服务发现与配置工具,与Docker容器可以无缝集成。,Spring Cloud Zookeeper:操作Zookeeper的工具包,用于使用zookeeper方式的服务注册和发现。,Spring Cloud Stream:数据流操作开发包,封装了与Redis,Rabbit、Kafka等发送接收消息。,Spring Cloud CLI:基于 Sprin

8、g Boot CLI,可以让你以命令行方式快速建立云组件。,7,Spring Cloud Sleuth:日志收集工具包,封装了Dapper,Zipkin和HTrace操作。,SpringCloud分布式开发五大神兽,Eureka服务注册,1,2,3,5,Eureka的高级架构图,Ribbon负载均衡,1,2,3,Ribbon架构图,Eureka Server,服务消费者,服务提供者1,服务提供者2,服务提供者3,Ribbon,注册,注册,注册,注册,可用服务列表,负载均衡请求,Hystrix熔断器,1,2,3,Hystrix架构图,ZUUL网关,1,2,3,ZUUL架构图,4,5,6,7,Sp

9、ring Cloud Config配置中心,Spring Cloud Config 架构图,Spring Cloud Config提供基于以下3个维度的配置管理:,应用,这个比较好理解,每个配置都是属于某一个应用的,环境,每个配置都是区分环境的,如dev, test,uat, prod等,版本,这个可能是一般的配置中心所缺乏的,就是对同一份配置的不同版本管理 Spring Cloud Config提供版本的支持,也就是说对于一个应用的不同部署实例,可以从服务端获取到不同版本的配置,这对于一些特殊场景如:灰度发布,A/B测试等提供了很好的支持,PART,XXXXXX公司,理赔渠道平台使用,THR

10、,非车理赔渠道平台介绍,非车理赔渠道平台是客户端与非车理赔系统之间的桥梁,系统接收到渠道的数据后,经过解密、报文重组,然后调用非车理赔服务,进行保存或者查询等动作。渠道平台意在减轻核心服务的压力,增加核心服务的安全性,减少核心人员的开发工作,同时更好的支持理赔服务。 非车理赔系统采用最新的Spring Cloud微服务架构,增强系统的灵活性,降低部署和开发难度。,非车理赔渠道平台,渠道平台总体架构图,接口服务1,接口服务2,ZUUL1,NGIX,APP,PC,ZUUL2,理赔 服务,微信,Eureka1,Eureka2,渠道平台,渠道平台总体架构描述,Eureka,两台ZUUL,两台主程序都注

11、册在两台Eureka服务上,并且两台Eureka相互注册。,主程序,主程序即渠道平台接口服务,收到ZUUL的请求后,调用理赔系统服务获取相关数据,并返回客户端。,NGIX,客户端访问NGIX,NGIX根据两台ZUUL的压力情况,采用NGIX负载均衡策略,访问压力最小的ZUUL服务。,ZUUL,ZUUL是渠道平台的入口,接收到NGIX转来的请求后,ZUUL根据两台主程序服务的压力情况,采用Ribbon负载均衡策略,访问压力最小的主程序。,EURAKE配置,配置结构,server: port: 7070 session: timeout: 100 tomcat: uri-encoding: UTF

12、-8spring: application: name: eureka-server output: ansi: enabled: detect config: location: config profiles: include: admin-testlogging: path: logs pattern: level: debug file: $logging.path/eureak.logeureka: server: enable-self-preservation: false # 关闭自我保护 instance: prefer-ip-address: true metadata-m

13、ap: cluster: admin-server management.context-path: $management.context-path health-check-url-path: $management.context-path/health client: service-url: defaultZone : http:/10.0.0.173:7070/eureka,http:/10.0.0.171:7070/eureka,配置示例,ZUUL配置 一,server: connection-timeout: 700000 session: timeout: 700000spr

14、ing: cloud: loadbalancer: retry: enabled: false # 关闭重试机制 data: cassandra: read-timeout-millis: 700000# 理论上这里设置了false 下面的hystrix和Ribbon的重试都不起作用,为了防止错误,下面多做了配置,以免重试# 60000 毫秒(分钟) 请求超时熔断hystrix: metrics: enabled: true command: default: execution: isolation: strategy: THREAD thread: timeroutInMillisecon

15、ds: 700000 #断路器的超时时间,断路器的超时时间设置时间比Ribbon的超时时间短,防止重试。 timeout: enabled: false threadpool: default: coreSize: 2000 maxQueueSize: 2000 queueSizeRejectionThreshold: 2000ribbon: IsSecured: true ConnectionTimeout: 6000000 # 连接超时时间 ReadTimeout: 6000000 OkToRetryOnAllOperations: false #关闭所有操作请求都进行重试 MaxAuto

16、RetriesNextServer: 0 # 尝试更换0次 MaxAutoRetries: 0 # 对当前实例的重试次数 eureka: enabled: true,ZUUL配置 二,zuul: max: host: connections: 5000 semaphore: max-semaphores: 10000 # 最大信号量 retryable: false # 关闭重试机制,以免重复提交 ignoredServices: * ribbon: eager-load: enabled: true host: connect-timeout-millis: 100000 socket-ti

17、meout-millis: 6000000 maxTotalConnections: 200000 # (总连接数)默认200 maxPerRouteConnections: 10000 # 路由连接数 默认 20 max-per-route-connections: 10000 # 扩大这个线程池的容量 max-total-connections: 10000 # 扩大这个线程池的容量 add-proxy-headers: true add-host-header: true strip-prefix: false ignoredPatterns: /*/management-context

18、-path/* routes: interfaceChannel: path: /interfaceChannel/* serviceId: claims-channel-server carchannel: path: /carchannel/* serviceId: carchannel-service tab-a: path: /tab-a/* serviceId: tab-a-service,ZUUL的使用,安心保险将ZUUL定义为所有Spring Cloud应用的网关,所以其中 不做个性化的实现,仅用来实现请求数据的转发。,联测过程中,因为此配置问题,当报文大于10M,请求时间 大于

19、5分钟时,ZUUL报错: Caused by: .SocketTimeoutException: Read timed out,server.tomcat.max-http-post-size,请求报文大小限制配置,测试接口时,请求数据大于2M,若不配置 会导致客户端直接收到500错误,无法进入主程序。,ribbon.ReadTimeout: 6000000,主程序配置,server.port=8080 #端口号spring.application.name= claims-channel-server #服务命名spring.config.location=config #指定配置文件夹sp

20、ring.profiles.include=redis-test,mysql-test,mybatis,swagger ,logging-test,banner,eureka-test,feign-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.to

21、mcat.max-http-post-size=2097152000 #请求数据大小 Byte#ZooKeeperdubbo.registry.address= 10.0.0.16:2281 #请求dubbo的Zookper地址配置spring.freemarker.cache=falsespring.freemarker.request-context-attribute=requestmanagement.security.enabled= falseendpoints.health.sensitive=falseendpoints.info.enabled=trueribbon.IsSe

22、cured= trueribbon.ConnectionTimeout= 600000ribbon.ReadTimeout= 600000info.app.name=weminfo.app.version=1.0.0info.build.artifactId=project.artifactIdinfo.build.version=Id=Name=u6D4Bu8BD5u6E20u9053image.pwd=000000,主程序调用核心:dubbo调用+Feign调用。 核心调用渠道平台:HTTP协议调用 主程序调用渠道:Feign调用; 程序参数配置,如右侧代码所示。,组件使用 - Feign

23、,FunctionalInterfaceFeignClient(name=feign-client ,url=$feign-url.report-fegin-url,fallbackFactory=ReportFeginFallBack.class)public interface ReportFeginURL RequestMapping(value = ccentscs/services/nclmRpt , method=RequestMethod.POST) String nclmRpt(String nclmRpt);,Componentpublic class ReportFegin

24、FallBack extends FeignExceptionServer Autowired private LogInterfaceServer logServer; Override public ReportFeginURL create(Throwable throwable) String equalsException = super.methodReturn(throwable); return (String nclmRpt)- logServer.saveLoggerInFile(ConstantUtile.FeignType.REPORT_SUBMIT.getvalue(

25、), equalsException); return ConstantUtile.FEGIN_CALL_BACK+_+equalsException; ; ,feign-url: report-fegin-url: http:/10.0.0.10:8083 #调用XXXX接口 evaluation-fegin-url: http:/10.0.0.19:8080 #调用XXXX接口 collect-upload-fegin-url: http:/10.0.0.19:8080 #调用XXXX接口,注入dubbo服务,如下: 调用dubbo接口中的方法photoService.QueryRptIn

26、foClaim (XXX); 获取dubbo接口返回数据。,组件使用 调用Dubbo服务, ,Autowiredprivate PhotoService photoService;,组件使用 - Swagger,Api(value = Report(报案接口), description = 报案接口)RestControllerRequestMapping(report)public class ReportController ApiOperation(value = 报案接口, notes = 报案接口) RequestMapping(value = /rptSubmit,method =

27、 RequestMethod.POST) ResponseBody public String rptSubmit(HttpServletRequest request) throws BusinessException return 报案返回Test; , com.didispace spring-boot-starter-swagger 1.3.0.RELEASE,在POM中添加Swagger引入:,程序部署简述,打包程序,在pom所在文件夹运行mvn install命令,则开始运行打包命令,将程序打成jar包,上传程序jar包,将打包好的jar包上传到服务器指定目录下,例如 /home/

28、jboss目录,启动程序,若当前程序在进程中,则关闭已存在进程; 进程关闭后,运行java jar命令启动程序; 例如启动测试环境: java -jar zuul-0.0.1-SNAPSHOT.jar -spring.profiles.active=test &,XXXXXX公司,问题与讨论,PART,FOUR,针对Spring Cloud微服务,我们的问题: 当前比较流程的微服务框架有哪些? Spring Cloud与Dubbo对比? 如何建立自己的微服务?,问题讨论,Spring Cloud:本文档主要介绍 Dubbo:阿里推出,国内SOA框架集大成之作 DubboX:当当团队基于dubb

29、o升级的一个版本 Motan:新浪微博开源的RPC框架 Thrift :facebook开源的RPC框架,当前比较流程的微服务框架有哪些,背景: Dubbo,是阿里巴巴服务化治理的核心框架,并被广泛应用于阿里巴巴集团的各成员站点。 Spring Cloud,是Spring Source的产物,除了Spring Source之外,还有Pivotal和Netfix是其强大的后盾与技术输出。 社区活跃度 Dubbo的更新频率很低,而Spring Cloud的更新仍处于高速迭代的阶段。 架构完整度 Dubbo只是实现了服务治理,而Spring Cloud下面有17个子项目(可能还会新增)分别覆盖了微服

30、务架构下的方方面面,服务治理只是其中的一个方面,,Spring Cloud与Dubbo对比,微服务划分粒度的大小:合理拆分业务结构 组织层次性:不要出现胡乱依赖,循环依赖 选择合适的微服务技术栈 以最小的代价发布出第一个微服务 总结并复制成功经验,建立起微服务交付的节奏,如何建立自己的微服务,感谢您的聆听,THANKS FOR WATCHING,XXXXXX公司,PPT模板下载: 行业PPT模板: 节日PPT模板: PPT素材下载: PPT背景图片: PPT图表下载: 优秀PPT下载: PPT教程: Word教程: Excel教程: 资料下载: PPT课件下载: 范文下载: 试卷下载: 教案下载: PPT论坛:,

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

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1