微服务云平台及DEVOPS培训课件.pptx
《微服务云平台及DEVOPS培训课件.pptx》由会员分享,可在线阅读,更多相关《微服务云平台及DEVOPS培训课件.pptx(58页珍藏版)》请在三一文库上搜索。
1、 微服务及DEVOPS 杨鹏 2020年02月PART 01微服务介绍PART 02 持续集成持续构建PART 03Devops介绍”微”即是小由一系列小服务组成独立运行每个服务运行于自己的独立进程业务建模围绕着业务功能进行建模独立部署每个服务独立部署5分散式管理最低限度的集中管理微服务更小更强更快微服务简介单体服体服务架构架构用户模块订单模块产品模块财务模块公共模块优点:缺点:可用性低,宕机全死服务器要求高项目臃肿,代码量飙升,耦合性过大系统架构、业务架构简单,容易理解集中部署,运维容易微服微服务架构架构用户订单财务产品邮件配置优点:缺点:业务架构复杂拆分粒度难以界定部署维护困难高可用硬件配
2、置低水平扩展业务简单快速响应耦合性低支持异构业务内聚分布式单体架构的体架构的访问用户模块订单模块产品模块财务模块公共模块微服微服务架构的架构的访问订单财务产品邮件10.0.0.6:800110.0.0.1:800210.0.0.2:800310.0.0.3:800410.0.0.4:800510.0.0.5:8006访问关系复杂用户1模块用户2用户n10.0.0.7:800210.0.0.8:8002每个服每个服务足足够内聚,足内聚,足够小,代小,代码容易理解、开容易理解、开发效率提高效率提高服服务之之间可以独立部署,微服可以独立部署,微服务架构架构让持持续部署成部署成为可能可能;每个服每个服
3、务可以各自可以各自进行行x扩展和展和z扩展,而且,每个服展,而且,每个服务可以根据自可以根据自己的需要部署到合适的硬件服己的需要部署到合适的硬件服务器上器上;容易容易扩大开大开发团队,可以,可以针对每个服每个服务(service)组件开件开发团队;提高容提高容错性性(fault isolation),一个服,一个服务的内存泄露并不会的内存泄露并不会让整个系整个系统瘫痪;系系统不会被不会被长期限制在某个技期限制在某个技术栈上。上。1、同一功能的微服、同一功能的微服务部署多个,怎么部署多个,怎么访问配置?配置?配置管理;配置管理;2、服、服务是否正常,怎么是否正常,怎么监控?即:控?即:服服务的注
4、册和的注册和发现;3、怎么判断服、怎么判断服务压力,力,压力大力大时怎么怎么进行熔断?行熔断?服服务容容错;4、多、多态服服务器的服器的服务,怎么,怎么进行行负载均衡;均衡;负载均衡,服均衡,服务网关;网关;Spring cloud与与Spring Boot的关系的关系Springboot是Spring的一套快速配置脚手架,可以基于springboot快速开发单个微服务,SpringCloud是一个基于SpringBoot实现的云应用开发工具;Springboot专注于快速、方便集成的单个个体,SpringCloud是关注全局的服务治理框架;springboot使用了默认大于配置的理念,很多集
5、成方案已经帮你选择好了,能不配置就不配置,SpringCloud很大的一部分是基于Springboot来实现Spring Cloud组件件 一一SpringCloudConfig配置管理开发工具包,可以让你把配置放到远程服务器,目前支持本地存储、Git以及Subversion。SpringCloudBus事件、消息总线,用于在集群(例如,配置变化事件)中传播状态变化,可与SpringCloudConfig联合实现热部署。NetflixHystrix容错管理工具,旨在通过控制服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力。SpringCloudforCloudFoundry通过Oau
6、th2协议绑定服务到CloudFoundry,CloudFoundry是VMware推出的开源PaaS云平台。SpringCloudNetflix针对多种Netflix组件提供的开发工具包,其中包括Eureka、Hystrix、Zuul、Archaius等。NetflixEureka云端负载均衡,一个基于REST的服务,用于定位服务,以实现云端的负载均衡和中间层服务器的故障转移。NetflixZuul边缘服务工具,是提供动态路由,监控,弹性,安全等的边缘服务。NetflixArchaius配置管理API,包含一系列配置管理API,提供动态类型化属性、线程安全配置操作、轮询框架、回调机制等功能。
7、Spring Cloud组件件 二二经验总结246531SpringCloudDataFlow:大数据操作工具,通过命令行方式操作数据流。SpringCloudSecurity:安全工具包,为你的应用程序添加安全控制,主要是指OAuth2。SpringCloudConsul:封装了Consul操作,consul是一个服务发现与配置工具,与Docker容器可以无缝集成。SpringCloudZookeeper:操作Zookeeper的工具包,用于使用zookeeper方式的服务注册和发现。SpringCloudStream:数据流操作开发包,封装了与Redis,Rabbit、Kafka等发送接收
8、消息。SpringCloudCLI:基于SpringBootCLI,可以让你以命令行方式快速建立云组件。7SpringCloudSleuth:日志收集工具包,封装了Dapper,Zipkin和HTrace操作。服务发现NetflixEureka客服端负载均衡NetflixRibbon断路器NetflixHystrix服务网关NetflixZuul分布式配置SpringCloudConfigSpringCloud分布式开分布式开发五大神五大神兽Eureka服服务注册注册123Register:服务注册当Eureka客户端向EurekaServer注册时,它提供自身的元数据,比如IP地址、端口,运
9、行状况指示符URL,主页等。Renew:服务续约Eureka客户会每隔30秒发送一次心跳来续约。通过续约来告知EurekaServer该Eureka客户仍然存在,没有出现问题。正常情况下,如果EurekaServer在90秒没有收到Eureka客户的续约,它会将实例从其注册表中删除。FetchRegistries:获取注册列表信息Eureka客户端从服务器获取注册表信息,并将其缓存在本地。客户端会使用该信息查找其他服务,从而进行远程调用。该注册列表信息定期(每30秒钟)更新一次。每次返回注册列表信息可能与Eureka客户端的缓存信息不同,Eureka客户端自动处理。Cancel:服务下线Eur
10、eka客户端在程序关闭时向Eureka服务器发送取消请求。发送请求后,该客户端实例信息将从服务器的实例注册表中删除。该下线请求不会自动完成,它需要调用以下内容:DiscoveryManager.getInstance().shutdownComponent();5Eviction服务剔除在默认的情况下,当Eureka客户端连续90秒没有向Eureka服务器发送服务续约,即心跳,Eureka服务器会将该服务实例从服务注册列表删除,即服务剔除。Eureka的高级架构图Ribbon负载均衡均衡123Ribbon的工作第一步有限选择EurekaServer,它优先选择在同一个Zone且负载较少的Ser
11、ver,第二步在根据用户指定的策略,在从Server取到的服务注册列表中选择一个地址。其中Ribbon提供了多重策略,例如轮询roundrobin、随机Random、根据相应时间加权等。负载均衡策略l简单轮询负载均衡l加权响应时间负载均衡l区域感知轮询负载均衡l随机负载均衡Ribbon中还包括以下功能:l易于与服务发现组件(比如Netflix的Eureka)集成l使用Archaius完成运行时配置l使用JMX暴露运维指标,使用Servo发布l多种可插拔的序列化选择Ribbon架构图EurekaServer服务消费者服务提供者1服务提供者2服务提供者3Ribbon注册注册注册注册可用服务列表负载
12、均衡请求Hystrix熔断器熔断器123服务雪崩效应形成的原因l服务提供者不可用l重试加大流量l服务调用者不可用Hystrix的设计原则包括:l资源隔离l熔断器l命令模式熔断器的概念熔断器即断路器,断路器(CricuitBreaker)是一种能够在远程服务不可用时自动熔断(打开开关),并在远程服务恢复时自动恢复(闭合开关)的设施,SpringCloud通过Netflix的Hystrix组件提供断路器、资源隔离与自我修复功能。Hystrix架构图ZUUL网关网关123验证与安全保障识别面向各类资源的验证要求并拒绝那些与要求不符的请求。审查与监控在边缘位置追踪有意义数据及统计结果,从而为我们带来准
13、确的生产状态结论。动态路由以动态方式根据需要将请求路由至不同后端集群处。ZUUL架构图4压力测试逐渐增加指向集群的负载流量,从而计算性能水平。5负载分配为每一种负载类型分配对应容量,并弃用超出限定值的请求。6静态响应处理在边缘位置直接建立部分响应,从而避免其流入内部集群。7多区域弹性跨越AWS区域进行请求路由,旨在实现ELB使用多样化并保证边缘位置与使用者尽可能接近。Spring Cloud Config配置中心配置中心SpringCloudConfig架构图SpringCloudConfig提供基于以下3个维度的配置管理:应用这个比较好理解,每个配置都是属于某一个应用的环境每个配置都是区分环
14、境的,如dev,test,uat,prod等版本l这个可能是一般的配置中心所缺乏的,就是对同一份配置的不同版本管理lSpring Cloud Config提供版本的支持,也就是说对于一个应用的不同部署实例,可以从服务端获取到不同版本的配置,这对于一些特殊场景如:灰度发布,A/B测试等提供了很好的支持产出于spring大家族,spring在企业级开发框架中无人能敌,来头很大,可以保证后续的更新、完善。比如dubbo现在就差不多死了有springBoot这个独立干将可以省很多事,大大小小的活springboot都搞的挺不错。作为一个微服务治理的大家伙,考虑的很全面,几乎服务治理的方方面面都考虑到了
15、方便开发开箱即用。SpringCloud活跃度很高,教程很丰富,遇到问题很容易找到解决方案轻轻松松几行代码就完成了熔断、均衡负责、服务中心的各种平台功能Spring Cloud 的的优势PART 01微服务介绍PART 02 持续集成持续构建PART 03Devops介绍1、微服、微服务一般一个功能一般一个功能2-3天开天开发完完毕,微服,微服务的的应用改用改动部署后,并且部署后,并且频繁的改繁的改动,测试的工作量很大,的工作量很大,测试人人员压力力较大;大;2、微服、微服务的的应用很多,很多运用很多,很多运维环境需要搭建,运境需要搭建,运维人人员部署部署1000台台/10w台机器,台机器,
16、监控控1000台台/10w台机器,台机器,难度加大;度加大;3、其他、其他问题;微服务带来的测试、集成、构建、部署问题微服务带来的测试、集成、构建、部署问题TDD(测试驱动开发)TDD得原理是在开发功能代码之前,先编写单元测试用例代码,测试代码确定需要编写什么产品代码。TDD得基本思路就是通过测试来推动整个开发得进行,但测试驱动开发并不只是单纯的测试工作,而是把需求分析,设计,质量控制量化的过程。优点:在任意一个开发节点都可以拿出一个可以使用,含少量bug并具一定功能的产品。缺点:增加代码量。测试代码是系统代码的两倍或更多。FDD(特征驱动开发)敏捷测试的方法CI/CD全过程管理容器Conta
17、iner镜像images仓库Repositories执行构建分发Docker 的镜像类似虚拟机的模板,但是更轻量例如:一个镜像可以包含一个完整的 Linux 操作系统环境,里面仅安装了 Tomcat或用户需要的其它应用程序镜像可以用来创建容器等同于从模板中创建虚拟机容器是从镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。可以把容器看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。JAVA项目如何通过Docker实现持续部署(只需简单四步),全程无需运维人员参与全程无需运维人员参与即:1
18、 1、开发人员通过、开发人员通过git pushgit push上传代码上传代码2 2、经、经GitGit和和JenkinsJenkins配合配合3 3、自动完成程序部署、自动完成程序部署4 4、发布、发布存放镜像的集合。仓库会包含不同软件的不同版本的镜像,通过:存储。分层存储不同软件的镜像。容器管理技术Docker三大核心概念Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。即:隔离空隔离空间。一次一次执行,行,处处运行运行基于
19、容器构筑具备完全一致性的开发测试环境Docker开发环境Docker功能测试环境Docker集成测试环境Docker生产环境开发构建部署发布镜像仓库代码库变更时手动或自动触发代码构建代码构建自动形成开发环境自动形成测试环境自动部署到生产环境测试集成我们项目最初的系统配置管理工作是由架构师来做的,主要需要做如下这些事:a)部署运行项目组开发需要用到公共的服务组件、例如zookeeper注册中心、DockerRegistry镜像仓库、数据库等;b)为子项目编写在git上打分支的脚本,便于测试发版的时候打分支;c)编写各类型应用发布部署成镜像的Dockerfile;d)制作或者在网上找到现成的开发所
20、需环境的Docker镜像,并且Push到项目开发使用的私有镜像库中;e)编写Shell脚本实现将子项目打包成Docker镜像,并且Push到镜像仓库中。f)在Jenkins上配置自动编译或者部署任务,实现持续集成和部署容器管理平台整体架构开发运维集群流程变化容器编排工具的一些关键能力概括如下:集群管理:集群管理:将虚拟机和物理机器的集群管理为一台大型机器。这些机器在资源能力方面可能有些差异,但大体上都是以Linux作为操作系统的机器。这些虚拟集群可以建立在云上、本地或两者的混合。部署:部署:能处理有大量机器的应用程序和容器的自动部署。支持多个版本的应用程序容器,并且还支持跨越大量集群机器的滚动
21、升级。这些工具还能够处理故障回滚。可伸可伸缩性:性:支持应用实例的自动和手动伸缩,以性能优化为主要目标。健康:健康:它管理集群、节点和应用程序的健康。可以从集群中移除异常的机器和应用程序实例。基基础结构抽象化:构抽象化:开发人员不必担心机器、容量等问题。完全是容器编排工具来决定如何调度和运行应用程序。这些工具也抽象化机器的细节、能力、使用和位置。对于应用程序所有者来说,它们相当于一个容量几乎无限的大型机器。资源源优化:化:这些工具以有效的方式在一组可用机器上分配容器工作负载,从而降低成本,通过从简单的到复杂的算法可有效地提高利用率。资源分配:源分配:基于应用程序开发人员设置的资源可用性和约束来
22、分配服务器。资源分配将基于约束、规则、端口要求、应用依赖性、健康等等。服服务可用性:可用性:确保服务在集群中正常运行。在机器故障的情况下,容器编排会自动通过在集群中的其他机器上重新启动这些服务来处理故障。敏捷性:敏捷性:敏捷性工具能够快速分配工作负载到可用资源,或者在资源需求发生变化时跨机器移动工作量。此外,可以根据业务临界性、业务优先级等来设置约束重新调整资源。隔离:隔离:一些工具提供了资源隔离。因此,即使应用程序不是容器化的,也可以实现资源隔离。什么容器编排工具容器的编排管理工具K8S2017年docker官方宣布支持K8s;现在国内大多数公司都可使用k8s进行传统IT服务转换,以实现高效
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微服 平台 DEVOPS 培训 课件
