2018年通信业务公司软件研究院微服务架构与实践培训课件.pdf
下载文档
上传人:地**
编号:1266419
2024-12-16
45页
1.07MB
该文档所属资源包:
通信业务公司软件研究院大数据技术信息安全IT总体规划培训课件资料
1、1微服务架构与实践微服务架构与实践2018年5月霍龙社霍龙社2什么是微服务典型的微服务架构RESTful API使用Spring Boot编写微服务使用Spring Cloud构架微服务系统常用开发环境和工具目录3应用系统架构演进集中式架构 单体应用中最常见的架构模式分布式架构 将一个大的任务拆分到不同的机器中进行计算,最后由一台服务器合并计算结果微服务架构 由一系列独立运行的微服务组成4单体架构表示层逻辑层数据层Web容器逻辑上分层:MVC物理上运行于同一台及其的同一个进程之中优点易于开发易于测试易于部署易于水平伸缩缺点学习困难,新人培养周期长适配新技术困难快速开发困难测试困难部署困难,持续2、交付周期长扩容困难,可扩展性差构建全功能团队困难5微服务架构6微服务是一种架构风格7由一系列小服务组成每个服务运行于自己的独立进程围绕着业务功能进行建模最低限度集中每个微服务都是业务完整的每个微服务应仅对一个业务负责每个微服务接口明确定义独立部署、升级和伸缩微服务特征8代码库独立每个微服务具有自己单独的代码库可独自编译、测试、打包、发布和部署服务启动迅速各个服务的代码库之间没有交叉依赖技术栈独立每个微服务都可以采用自己独立的技术栈来实现团队可以尝试使用新的技术、语言、工具和框架,易于引入新技术所选的技术栈一般来说都很轻量级不需要统一标准化技术栈,开发人员关注与业务实现而非技术可伸缩可扩展性独立3、每个微服务都可以独立伸缩更加直观定位技术瓶颈可以根据需求来对数据库进行分片业务功能独立每个微服务可以在不影响别的微服务情况下进行功能扩展可以进行整个业务功能的重写和替换部署可以灵活增添新的业务功能微服务的独立性与自主性9微服务的优点和挑战10典型的微服务架构API网关微服务A数据库A微服务B数据库B微服务C微服务注册中心用户认证授权中心浏览器日志测量监控消息中间件11API网关是一个特殊的微服务用于为后端微服务提供一个统一的访问入口HTTP路由负载均衡安全QoS控制接入控制熔断机制API网关12微服务注册中心微服务注册中心也是一个特殊的微服务主要用于微服务的注册与发现,进而为API路由、负载均4、衡、微服务扩缩容等提供支撑微服务注册微服务发现微服务配置中心微服务监控管理13用户认证授权中心(UAA)UAA也是一个特殊的微服务,为系统提供一个统一的安全控制服务主要用于用户的认证、鉴权、授权,以及基于角色的访问控制用户管理角色管理用户认证授权基于角色的访问控制14消息中间件消息中间件由一组特殊的微服务组成(例如Kafka,zookeeper等)主要用于系统中微服务间异步消息/数据的高效传输和处理数据过滤在边缘节点分析和压缩数据以缩减需要传输和处理的数据量数据传输处理数据中心内部及之间的异步消息/数据传输数据处理低延时、高吞吐量数据传输、聚合和分析15日志、测量和监控由一组特殊的微服务组成主5、要用于搜集、记录系统运行过程中的日志以及告警、性能等监控数据,并以图表化的形式进行可视化展示日志及测量数据索引日志处理和分析可视化展示16微服务访问-RESTful 对外提供资源供别人(浏览器,客户端,别的微服务,别的应用系统,)来访问 访问类型:增,删,改,查微服务的作用 进程间通信 RPC RESTful API:目前最流行的互联网接口事实标准,结构清晰、符合标准、易于理解、扩展方便如何访问微服务17 表现层状态转化:Representational State Transfer Roy Thomas Fielding博士2000年在其博士论文中提出RESTRESTful资源微服务对外提供6、服务,供外界访问的资源数据用一个URL来表示,例如:/api/users表现层资源的表现形式,例如:html,xml,json通过HTTP协议来传递应该在HTTP请求的头信息中用Accept和Content-Type字段来指定状态转化HTTP:无状态协议HTTP方法:GET,POST,PUT,DELETE,PATCH,HEAD,OPTIONS客户端采用HTTP协议,使用GET/POST/PUT/DELETE等方法,通过服务器对外暴露的URL端点来对服务器端资源进行操作,在客户端和服务器之间传递这些资源的某种表现层,从而实现服务器端资源状态的转化。18RESTful API所有对微服务的访问都是7、通过访问RESTfulAPI来进行的定义APIHTTP方法GETPOSTPUTDELETE资源URL用于定位资源,例如:/api/usersURL参数用于过滤资源,例如:?age18&group=student表现HTTP请求头HTTP请求体HTTP响应码HTTP相应头HTTP响应体19GETGET/api/users获取所有用户信息GET/api/users?age18获取所有年龄大于18的用户的信息GET/api/users/zhangsan获取用户zhangsan的信息GET/driving_route?from=“金融街”&to=“小汤山”POSTPOST/api/users新增一个用8、户(HTTP请求体中携带用户信息)PUTPUT/api/users/zhangsan修改用户zhangsan的信息DELETEDELETE/api/users所有所有用户DELETE/api/users?age18删除所有年龄大于18的用户DELETE/api/users/zhangsan删除用户zhangsanRESTful API举例注意:URL只是服务器暴露给外界的资源访问端点,具体资源如何存放和操作由服务器后端的业务逻辑来实现20利用Spring Boot和Spring Cloud构建微服务系统Spring Boot:编写单个微服务程序Spring Cloud:搭建微服务框架微服务应用9、系统21使编码变得更简单使配置变得更简单使部署变得更简单使监控变得更简单Spring Boot Spring是基于Java的Web应用开发框架 SpringBoot是伴随着Spring4.0诞生的 从字面理解,Boot是引导的意思,因此SpringBoot帮助开发者快速搭建Spring框架 SpringBoot帮助开发者快速启动一个Web容器 SpringBoot继承了原有Spring框架的优秀基因 SpringBoot简化了使用Spring的过程22Spring Boot使编码变得更简单声明一项依赖添加一个方法生成一个微服务:内嵌Tomcat容器的JAR包23Spring Boot使配置变得10、更简单Spring由于其繁琐的配置,一度被人认为“配置地狱”“配置地狱”,各种XML、Annotation配置,让人眼花缭乱,而且如果出错了也很难找出原因Spring Boot更多的是采用Java Config的方式对Spring进行配置24Spring Boot使部署变得更简单My code第三方库嵌入式HTTP容器hello.jar一键启动减压Java jar hello.jar不需要部署应用服务器WebSphereApplication ServerWebLogicTomcat降低对运行环境的基本要求运行环境中有JDK即可默认内嵌Tomcat25Spring Boot使监控变得更简单2611、Spring CloudSpring Cloud是基于Spring Boot的一整套实现微服务的框架利用Spring Boot的便利性巧妙地简化了分布式系统基础设施的开发如服务注册与发现、API路由、负载均衡、配置中心、消息总线、断路器、数据监控等功能,都可以用Spring Boot的风格做到一键启动和部署Spring Cloud并没有重复制造轮子,它只是将目前市场上各家公司开发的较为成熟、经得起实际考验的服务框架整合起来,通过Spring Boot风格进行再封装屏蔽掉复杂的配置和实现原理,最终给开发者贡献一套简单易懂、易开发、易部署和易维护的分布式系统开发工具包27Spring Boot是一12、套Spring的快速配置脚手架,基于Spring Boot可快速开发单个微服务专注于快速、方便地构建单个个体使用默认大于配置的理念,很多集成方案已经为用户选择好了,能不配置就不配置Spring Cloud是一套基于Spring Boot实现的微服务云应用开发框架关注全局的服务治理框架很大一部分是基于Spring Boot来实现Spring Cloud与Spring Boot的关系28Spring Cloud29Spring Cloud ConfigSpring Cloud NetflixSpring Cloud BusSpring Cloud for Cloud FoundrySpring C13、loud Open Service BrokerSpring Cloud ClusterSpring Cloud ConsulSpring Cloud SecuritySpring Cloud SleuthSpring Cloud Data FlowSpring Cloud StreamSpring Cloud Stream App StartersSpring Cloud TaskSpring Cloud Task App StartersSpring Cloud ZookeeperSpring Cloud for Amazon Web ServicesSpring Cloud Connec14、torsSpring Cloud StartersSpring Cloud CLISpring Cloud ContractSpring Cloud GatewaySpring Cloud OpenFeignSpring家族成员30NetFilx是一家在全球范围内提供流媒体视频服务的公司Netflix OSS组件是由Netflix公司开发并开源的一套微服务框架,这套框架在Netflix公司大规模微服务环境中经过数年的生产环境检验被证明是可行的Spring Cloud Netflix是利用Spring Boot编程框架基于Netflix OSS组件的再次封装,提高了易用性以及与Spring Cl15、oud其他组件的整合性,构成了Spring Cloud的核心组件Spring Cloud NetflixService Discovery(Eureka)Circuit Breaker(Hystrix)Intelligent Routing(Zuul)Client Side Load Balancing(Ribbon)31服务注册与发现Eureka server:8761微服务1:8080(Eureka client)微服务2:8081(Eureka client)浏览器32服务注册与发现Eureka ServerEureka Client33API网关(HTTP路由)Eureka serve16、r:8761微服务:8090(book-service)Zuul proxy:8080(API网关)浏览器34API网关API gateway微服务35客户端负载均衡(反向代理)微服务say-hello(副本1):8090Ribbon client:8080(API网关)浏览器微服务say-hello(副本2):8091微服务say-hello(副本3):809236客户端负载均衡(反向代理)37Hystrix断路器微服务:8090(book-store)Hystrix:8080(API网关)浏览器38Hystrix断路器Hystrix断路器微服务(Bookstore)开启微服务(Bookstore):关闭微服务(Bookstore):39Spring配置中心微服务:80809001(Actuator)浏览器ConfigServer:8888配置文件(git)40Spring配置中心41微服务部署42常用开发环境和工具43常用开发环境和工具44常用开发环境和工具45谢谢!谢谢!