您好,欢迎访问三七文档
微服务入门介绍SpringCloud林可斌●主要内容一、服务架构设计的发展二、微服务简介三、微服务架构工作流程四、springCloud介绍一、服务架构设计的发展单体架构•单一代码库、IDE友好、看着简单•容易部署•开发模型简单,一份代码库进行编码、构建和部署•技术栈单一单体架构的特点和好处•庞大的代码库,关系错综复杂•交付周期长•扩展能力与弹性受限•新技术与工具框架使用会受限•维护成本高单体架构的问题服务化架构•对业务进行分层,通常分为表现层(前端)、公共服务、业务逻辑服务、数据访问层等•对业务进行解耦,通过Pub-Sub或RPC进行服务间调用关系解耦•服务独立性,多数服务可以进行独立打包发布•每个服务的技术栈单一•部署简单,具备可伸缩性服务化架构的特点和好处•对于部分服务而言,代码库依然很庞大•打包、发布、部署流程不足够好•维护团队间沟通受阻,技术经验有效传递不够•服务增多对开发人员不够友好服务化架构的问题微服务架构服务注册→服务发现→服务调用MVCSOAMicroservices架构设计发展MVCSOAMicroservices视图、业务逻辑前后端分离架构设计发展MVCSOAMicroservices视图、业务逻大型系统分层辑前后端分离解耦,标准接口调用,分布式系统架构设计发展MVCSOAMicroservices视图、业务逻大型系统分层云计算产物,辑前后端分离解耦,标准接关注敏捷交付口调用,分布和部署速度、式系统频次架构设计发展二、微服务简介•suiteofsmallservices:由一系列小服务组成•runninginitsownprocess:每个服务运行于自己的独立进程•builtaroundbusinesscapabilities:围绕着业务功能进行建模•independentlydeployable:每个服务可进行独立部署•bareminimumofcentralizedmanagement:最低限度集中种管理微服务的特征•每个微服务都是业务完整的接口及界面呈现、业务逻辑、数据管理•每个微服务仅仅对一个业务负责产品服务、评价服务、支付服务、订单服务•每个微服务接口明确定义接口消费只关注接口,对微服务不具备依赖•独立部署、升级和伸缩服务的独立性与自主性微服务的独立性与自主性•微服务间的独立性是关键•代码库独立•技术栈独立•可伸缩性、可扩展性独立•还有业务功能等独立的代码库•每个微服务具备自己的代码仓库•由对应团队开发者维护•编译、打包、发布及部署都很快•服务启动迅速•在各个服务的代码库间没有交叉依赖技术栈对立•每个微服务都有自己独立的技术栈来实现•根据业务实现需求来选中最合适的技术栈•团队可以尝试新的技术、工具或者框架•所选的技术栈一般来说都很轻量级•不需要同一标准化技术栈的选择。无需针对技术选型而纠关注业务实现独立的可伸缩性•每个微服务都可以独立的伸缩•更加直观定位性能瓶颈•数据库分片可以根据需求来业务功能独立•每个微服务可以在不影响其他微服务的情况下进行功能扩展•例如更新新版本界面或者某个微服务中的某项功能时,无需更新整个系统•可以进行整个业务功能的重写,并替换之*要保证接口明确定义且稳定微服务优点•每个服务足够内聚,足够小,代码容易理解、开发效率提高•服务之间可以独立部署,微服务架构让持续部署成为可能;•每个服务可以各自进行x扩展和z扩展,而且,每个服务可以根据自己的需要部署到合适的硬件服务器上;•容易扩大开发团队,可以针对每个服务(service)组件开发团队;•提高容错性(faultisolation),一个服务的内存泄露并不会让整个系统瘫痪;•系统不会被长期限制在某个技术栈上。微服务不足•“微服务”强调了服务大小•业务逻辑。•分区数据库•测试三、微服务架构工作流程微服务架构工作流程•设计阶段将产品功能拆分为若干服务为每个服务设计API接口•开发阶段实现API接口(包括单元测试)开发UI原型(页面)•测试阶段前后端集成验证产品功能•部署阶段发布测试环境发布生产环境四、springCloud介绍springCloud介绍SpringCloud是一系列框架的有序集合。它利用SpringBoot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用SpringBoot的开发风格做到一键启动和部署。Spring并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过SpringBoot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。springCloud主要成员主要的小弟有:SpringCloudConfig、SpringCloudNetflix(Eureka、Hystrix、Zuul、Archaius…)、SpringCloudBus、SpringCloudforCloudFoundry、SpringCloudCluster、SpringCloudConsul、SpringCloudSecurity、SpringCloudSleuth、SpringCloudDataFlow、SpringCloudStream、SpringCloudTask、SpringCloudZookeeper、SpringCloudConnectors、SpringCloudStarters、SpringCloudCLI,每个小弟身怀独门绝技武功高强下面来做一一介绍。SpringCloudNetflix这可是个大boss,地位仅次于老大,老大各项服务依赖y于它,与各种NetflixOSS组件集成,组成微服务的核心,它的小弟主要有Eureka,Hystrix,Zuul,Archaius…NetflixHystrix熔断器,容错管理工具,旨在通过熔断机制控制服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力。比如突然某个小弟生病了,但是你还需要它的支持,然后调用之后它半天没有响应,你却不知道,一直在等等这个响应;有可能别的小弟也正在调用你的武功绝技,那么当请求多之后,就会发生严重的阻塞影响老大的整体计划。这个时候Hystrix就派上用场了,当Hystrix发现某个小弟不在状态不稳定立马马上让它下线,让其它小弟来顶上来,或者给你说不用等了这个小弟今天肯定不行,该干嘛赶紧干嘛去别在这排队了。NetflixEureka服务中心,云端服务发现,一个基于REST的服务,用于定位服务,以实现云端中间层服务发现和故障转移。这个可是springcloud最牛鼻的小弟,服务中心,任何小弟需要其它小弟支持什么都需要从这里来拿,同样的你有什么独门武功的都赶紧过报道,方便以后其它小弟来调用;它的好处是你不需要直接找各种什么小弟支持,只需要到服务中心来领取,也不需要知道提供支持的其它小弟在哪里,还是几个小弟来支持的,反正拿来用就行,服务中心来保证稳定性和质量。NetflixZuulZuul是在云平台上提供动态路由,监控,弹性,安全等边缘服务的框架。Zuul相当于是设备和Netflix流应用的Web网站后端所有请求的前门。当其它门派来找大哥办事的时候一定要先经过zuul,看下有没有带刀子什么的给拦截回去,或者是需要找那个小弟的直接给带过去。SpringCloudConfig俗称的配置中心,配置管理工具包,让你可以把配置放到远程服务器,集中化管理集群配置,目前支持本地存储、Git以及Subversion。就是以后大家武器、枪火什么的东西都集中放到一起,别随便自己带,方便以后统一管理、升级装备。SpringCloud的优势微服务的框架那么多比如:dubbo、Kubernetes,为什么就要使用SpringCloud的呢?•产出于spring大家族,spring在企业级开发框架中无人能敌,来头很大,可以保证后续的更新、完善。比如dubbo现在就差不多死了•有springBoot这个独立干将可以省很多事,大大小小的活springboot都搞的挺不错。•作为一个微服务治理的大家伙,考虑的很全面,几乎服务治理的方方面面都考虑到了,方便开发开箱即用。•SpringCloud活跃度很高,教程很丰富,遇到问题很容易找到解决方案•轻轻松松几行代码就完成了熔断、均衡负责、服务中心的各种平台功能与SpringBoot的关系Springboot是Spring的一套快速配置脚手架,可以基于springboot快速开发单个微服务,SpringCloud是一个基于SpringBoot实现的云应用开发工具;Springboot专注于快速、方便集成的单个个体,SpringCloud是关注全局的服务治理框架;springboot使用了默认大于配置的理念,很多集成方案已经帮你选择好了,能不配置就不配置,SpringCloud很大的一部分是基于Springboot来实现如何搭建一个微服务框架?
本文标题:微服务入门
链接地址:https://www.777doc.com/doc-4748742 .html