您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 销售管理 > Spring-Cloud微服务基础与应用
XXXXXX公司演讲人:shilk微服务SpringCloudSpringCloud简介SpringCloud组件理赔渠道平台使用问题与讨论PARTXXXXXX公司演讲人:shilkSpringCloud简介ONE”微”即是小由一系列小服务组成微服务简介独立运行每个服务运行于自己的独立进程业务建模围绕着业务功能进行建模独立部署每个服务独立部署5分散式管理最低限度的集中管理微服务更小更强更快微服务的特征服务即组件每个服务对一个业务负责关注业务逻辑分散式管理服务可以独立部署,更清晰的模块边界,每个服务提供方可以专注发布API,隐藏实现细节和版本。例如:理赔服务保费试算服务承保服务核保服务支付服务所有微服务调用使用统一协议,微服务团队只需要关注如何将输入转化为输出的逻辑,而不需要考虑网络层实现细节。每个微服务团队有充分自由选择自己团队熟悉的编程语言、数据库和其他中间件等技术栈。SpringCloud简介利用SpringBoot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用SpringBoot的开发风格做到一键启动和部署。SpringCloud是对Netflix的多个开源组件进一步的封装而成,同时又实现了和云端平台,和SpringBoot开发框架很好的集成。SpringCloud是一个相对比较新的微服务框架,2016年才推出1.0的release版本.虽然SpringCloud时间最短,但是相比Dubbo等RPC框架,SpringCloud提供的全套的分布式系统解决方案。SpringCloud是一系列框架的有序集合SpringCloud优势架构完整度它的子项目涵盖了所有实现布式系统所需要的基础软件设施社区活跃度选择一个开源框架,社区的活跃度是我们极为关注的一个要点。社区越活跃,解决问题的速度越快,框架也会越来越完善,不然当我们碰到问题,就不得不自己解决。开发部署极其简单基于SpringBoot,使得开发部署极其简单(加依赖,加注解,就能运行了)与dubbo相比从框架的完整度来看,Dubbo只是实现了服务治理(注册,发现等),而SpringCloud下面有很多个子项目覆盖了微服务架构下的方方面面,服务治理只是其中的一个方面SpringCloud架构图SpringCloud使用一?xmlversion=1.0encoding=UTF-8?projectxmlns=:xsi=:schemaLocation=://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdCloud/groupIdartifactIdtest/artifactIdversion0.0.1-SNAPSHOT/versionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion1.3.0.RELEASE/version/parentdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency/dependenciesbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactIddependenciesdependencygroupIdorg.springframework/groupIdartifactIdspringloaded/artifactIdversion1.2.5.RELEASE/version/dependency/dependencies/plugin/plugins/build/projectspringboot的核心技术基于spring4.x。环境说明IDE:IntelliJIDEA2017.2.5JDK:1.8管理:mvn3服务器:内置tomcat创建一个maven项目先在pom.xml中加入依赖的包(如右部分所示)创建一个Application类具体见下页SpringCloud使用二@Controller@EnableSwagger2Doc@SpringBootApplication@EnableDiscoveryClient@EnableFeignClients//@ImportResource(locations={classpath:config/application-dubbon.xml})publicclassApplication{@ResponseBody@RequestMapping(value=/)publicStringlocation(){returnHelloWorld;}/***@paramargs*/publicstaticvoidmain(String[]args){SpringApplication.run(Application.class,args);}}代码结构如上图所示;代码实现如右图所示;@SpringBootApplication=@Configuration+@EnableAutoConfiguration+@ComponentScan@Configuration,@ComponentSca这俩注解语法是spring框架中的,起步于spring3.x@EnableAutoConfiguration是springboot语法,表示自动配置。PARTXXXXXX公司演讲人:shilkSpringCloud组件TWOSpringCloud组件一SpringCloudConfig配置管理开发工具包,可以让你把配置放到远程服务器,目前支持本地存储、Git以及Subversion。SpringCloudBus事件、消息总线,用于在集群(例如,配置变化事件)中传播状态变化,可与SpringCloudConfig联合实现热部署。NetflixHystrix容错管理工具,旨在通过控制服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力。SpringCloudforCloudFoundry通过Oauth2协议绑定服务到CloudFoundry,CloudFoundry是VMware推出的开源PaaS云平台。SpringCloudNetflix针对多种Netflix组件提供的开发工具包,其中包括Eureka、Hystrix、Zuul、Archaius等。NetflixEureka云端负载均衡,一个基于REST的服务,用于定位服务,以实现云端的负载均衡和中间层服务器的故障转移。NetflixZuul边缘服务工具,是提供动态路由,监控,弹性,安全等的边缘服务。NetflixArchaius配置管理API,包含一系列配置管理API,提供动态类型化属性、线程安全配置操作、轮询框架、回调机制等功能。SpringCloud组件二详见:经验总结246531SpringCloudDataFlow:大数据操作工具,通过命令行方式操作数据流。SpringCloudSecurity:安全工具包,为你的应用程序添加安全控制,主要是指OAuth2。SpringCloudConsul:封装了Consul操作,consul是一个服务发现与配置工具,与Docker容器可以无缝集成。SpringCloudZookeeper:操作Zookeeper的工具包,用于使用zookeeper方式的服务注册和发现。SpringCloudStream:数据流操作开发包,封装了与Redis,Rabbit、Kafka等发送接收消息。SpringCloudCLI:基于SpringBootCLI,可以让你以命令行方式快速建立云组件。7SpringCloudSleuth:日志收集工具包,封装了Dapper,Zipkin和HTrace操作。服务发现NetflixEurekaSpringCloud分布式开发五大神兽客服端负载均衡NetflixRibbon断路器NetflixHystrix服务网关NetflixZuul分布式配置SpringCloudConfigEureka服务注册123Register:服务注册当Eureka客户端向EurekaServer注册时,它提供自身的元数据,比如IP地址、端口,运行状况指示符URL,主页等。Renew:服务续约Eureka客户会每隔30秒发送一次心跳来续约。通过续约来告知EurekaServer该Eureka客户仍然存在,没有出现问题。正常情况下,如果EurekaServer在90秒没有收到Eureka客户的续约,它会将实例从其注册表中删除。FetchRegistries:获取注册列表信息Eureka客户端从服务器获取注册表信息,并将其缓存在本地。客户端会使用该信息查找其他服务,从而进行远程调用。该注册列表信息定期(每30秒钟)更新一次。每次返回注册列表信息可能与Eureka客户端的缓存信息不同,Eureka客户端自动处理。Cancel:服务下线Eureka客户端在程序关闭时向Eureka服务器发送取消请求。发送请求后,该客户端实例信息将从服务器的实例注册表中删除。该下线请求不会自动完成,它需要调用以下内容:DiscoveryManager.getInstance().shutdownComponent();5Eviction服务剔除在默认的情况下,当Eureka客户端连续90秒没有向Eureka服务器发送服务续约,即心跳,Eureka服务器会将该服务实例从服务注册列表删除,即服务剔除。Eureka的高级架构图Ribbon负载均衡123Ribbon的工作第一步有限选择EurekaServer,它优先选择在同一个Zone且负载较少的Server,第二步在根据用户指定的策略,在从Server取到的服务注册列表中选择一个地址。其中Ribbon提供了多重策略,例如轮询roundrobin、随机Random、根据相应时间加权等。负载均衡策略简单轮询负载均衡加权响应时间负载均衡区域感知轮询负载均衡随机负载均衡Ribbon中还包括以下功能:易于与服务发现组件(比如Netflix的Eureka)集成使用Archaius完成运行时配置使用JMX暴露运维指标,使用Servo发布多种可插拔的序列化选择Ribbon架构图EurekaServer服务消费者服务提供者1服务提供者2服务提供者3Ribbon注册注册注册注册可用服务列表负载均衡请求Hystrix熔断器123服务雪崩效应形成的原因服务提供者不可用重试加大流量服务调用者不可用Hystrix的设计原则包括:资源隔离熔断器命令模式熔断器的概念熔断器即断路器,断路器(CricuitBreaker)是一种能够在远程服务不可用时自动熔断(打开开关),并在远程服务恢复时自动恢复(闭合开关)的设施,SpringCloud通过Netflix的Hystrix组件提供断路器、资源隔离与自我修复功能。Hystrix架构图ZUUL网关123验证与安全保障
本文标题:Spring-Cloud微服务基础与应用
链接地址:https://www.777doc.com/doc-4751170 .html