微服务浅谈&服务治理的演变过程

  • 时间:
  • 浏览:26
  • 来源:大发pk10_pk10遗漏_大发pk10遗漏

这两天对互联网的架构演变进行了简单了解,并对微服务的出现很感兴趣,过多对相关知识进行了简单的挂接与总结。

本篇文章先简单介绍了互联网架构的演变,进而介绍了服务化,最后介绍了微服务及最新的服务网格(Service Mesh)。

---------------------

互联网架构演变

一体架构

在计算机软件发展早期,一般桌面软件不不 采用这种 架构,不管是界面还是业务补救还是数据补救都插进两个 包中。这种 虽然谈不上架构,但也可不不不 说是很好的架构,如此 它足够简单。

mvc架构

但随着浏览器的出现便产生了web应用,web应用的特点是界面主次是显示在浏览器中,服务补救是在服务容器中的,页面显示一般用css+js+html技术来补救,而后端可不不不 用java、php等语言,这就产生了前后端分离。对于web系统,一体架构难以满足前后端分离的开发需求,因而便产生了MVC架构。

 

MVC才算的上真正意义上的架构,如此 它除了补救了前后端分离大问题,还引入了四种 全新的开发模式,用四种 业务逻辑、数据、界面显示分离的法律妙招 组织代码,使得整个应用层次更加分明,很久各个层次之间不但减低了耦合性,还提高了各个层次的可重用性。

但随着应用规模的不断扩大,应用模块不断增加,整个应用也显得如此臃肿,维护起来也更加困难,很久便又产生了多应用架构。

多应用架构

多应用架构很简单,过多把如此 的应用按照业务特点拆分成多个应用。比如两个 大型电商系统如此 暗含用户系统、商品系统、订单系统、评价系统等等,我们我们我们可不不不 把我们我们我们独立出来形成两个 个单独的应用。多应用架构的特点是应用之间各人独立 ,不相互调用。

 

多应用虽然补救了应用臃肿大问题,但应用之间相互独立,其他一起的业务或代码无法复用。

分布式架构

对于两个 大型的互联网系统,一般会暗含多个应用,很久应用之间往往还处于一起的业务,很久应用之间还处于调用关系。除此之外 ,对于大型的互联网系统还有其他其它的挑战,比如怎么应对急剧增长的用户,怎么管理好研发团队快速迭代产品研发,怎么保持产品升级更加稳定等等 。

很久,为了使业务得到很好的复用,模块更加容易拓展和维护,我们我们我们希望业务与应用分离,某个业务不再属于两个 应用,过多作为两个 独立的服务单独进行维护。应用四种 不再是两个 臃肿的模块堆积,过多由两个 个模块化的服务组件组合而成。

服务化

服务化的特点

后面 介绍的分布式架构即服务化。我们我们我们再总结一下,服务化主要有如下特点:

  • 应用按业务拆分成服务
  • 各个服务均可独立部署
  • 服务可被多个应用共享
  • 服务之间可不不不 通信

服务化的好处

如此企业采用服务化有哪此好处呢?

  • 架构上系统更加清晰
  • 核心模块稳定,以服务组件为单位进行升级,补救了频繁发布带来的风险
  • 开发管理方便
  • 单独团队维护、工作分明,职责清晰
  • 业务复用、代码复用
  • 非常容易拓展

服务化实现法律妙招

如此 要实现服务化一句话,最常用的法律妙招 过多利用RPC框架。如此 服务组件一般分布在不同的服务器上,过多要实现服务化不不 补救的第两个 大问题过多RPC**远程服务调用**。累似 于RPC方案有过多,比如:

  • Java RMI
  • WebService
  • Hessian
  • Http
  • Thrift
  • … …

服务化面临的挑战

后面 提到要实现服务化首先不不 补救远程服务调用大问题,除此之外,还有过多其他大问题不不 补救。

  • 服务过多,配置管理冗杂
  • 服务间依赖关系冗杂
  • 服务之间的负载均衡
  • 服务的拓展
  • 服务监控
  • 服务降级
  • 服务鉴权
  • 服务上线与下线
  • 服务文档
  • … …

服务治理

后面 提到了服务化,虽然要想服务化,服务治理是关键。如此有如此好的服务治理方案呢?答案是有的,很久过多人不不 用这种 框架,他过多-dubbo。dubbo过多两个 暗含服务治理功能的RPC框架。

 

dubbo提供了一套较为完整的服务治理方案,过多企业如此 要实现服务化一句话,dubbo 是很好的两个 取舍。这里简单介绍一下dubbo服务治理相关方案。

服务发现注册

服务治理领域最重要的大问题过多服务发现与注册。dubbo中引入了两个 注册中心的概念,服务的注册与发现主要就依赖这种 服务中心。

 

dubbo注册中心服务注册发现的具体过程:

服务提供者启动,向注册中心注册各人提供的服务

消费者启动,向注册中心订阅各人不不 的服务

注册中心返回服务提供者的列表给消费者

消费者从服务提供者列表中,按照软负载均衡算法,取舍一台发起请求

服务监控

集群容错

 

负载均衡

  • Random Loadbalance
  • RoundRobin
  • LeastActive
  • ConsistentHash

dubbo服务治理优势

  • 注册中心只负责注册查找,不负责请求转发,压力小
  • 注册中心宕机影响消费者,消费者本地缓存服务地址列表
  • 注册中心对等集群,宕掉一台自动切换到另外 一台
  • 服务提供者无请况,可动态部署,注册中心负责推送
  • 统计无压力,本地内存中累计次数,每分钟发送注册中心
  • 消费者调用服务者,自动软负载均衡
  • 通过服务中心可追踪依赖关系
  • 监控中心为扩容和降级提供妙招
  • 可启用acl机制进行鉴权
  • 与Spring整合,接入简单松耦合
  • 多种序列化协议支持

dubbo的处于问题

  • 消费者仍不不 依赖配置中心
  • 消费者仍不不 依赖jar包配置provider
  • 提供者文档管理功能缺失
  • 无统一入口
  • 不支持OAuth2.0
  • 内部鉴权不方便管理
  • 无内部应用鉴权
  • 接口基本裸奔,无法直接对外暴露服务
  • IT治理不方便

微服务

现在过多人不不 谈微服务,如此到底哪此是微服务呢?这里谈谈我对微服务的理解。

微服务两个 核心:

  • 微:服务的粒度要细,即服务要细化到API
  • 服务:提供好服务,要让用户感到好用(要做到这种 点很不容易)

微服务(Microservices)是四种 架构风格,两个 大型冗杂软件应用由两个 或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有请况下,每个任务代表着两个 小的业务能力。

微服务架构 ≈ 模块化开发 + 分布式计算

 

从后面 这幅图看出,微服务不为甚简单(好的架构就应该简单),我们我们我们把服务再拆分成两个 个API,API是两个 完整的功能。很久我们我们我们把API扔到两个 “云上”,很久用户就可不不不 到“云上”获取所有API的服务,这种 “云”保证能提供好的服务。

我们我们我们可不不不 看了,有了微服务如此 ,服务对用户来说变得不为甚简单,很久后面 dubbo的处于问题之处于微服务这里都补救了。使用者不再不不 依赖任何jar包,不再不不 去注册中心查找服务,不再去做鉴权补救,不不担心服务挂掉,不不担心不不使用服务,所有的大问题这种 “云”都补救了。这也是微服务的核心之一,提供好服务。

说到这里,我们我们我们就应该大体知道该为甚在么在做微服务了,图中的“云”是关键。下面我们我们我们就慢慢拨开这朵云。

微服务的实现

微服务的关键是服务网关,过多,后面 提到的“云”过多服务网关。要做微服务,我们我们我们先定义一下微服务不不 具备的特点。

常见的微服务组件及概念:

  • 服务注册:服务提供方将各人调用地址注册到服务注册中心,让服务调用方不不 方便地找到各人。
  • 服务发现:服务调用方从服务注册中心找到各人不不 调用的服务的地址。
  • 负载均衡:服务提供方一般以多实例的形式提供服务,负载均衡功可不不不 够让服务调用方连接到大概的服务节点。很久,节点取舍的工作对服务调用方来说是透明的。
  • 服务网关:服务网关是服务调用的唯一入口,可不不不 在这种 组件是实现用户鉴权、动态路由、灰度发布、A/B 测试、负载限流等功能。
  • 配置中心:将本地化的配置信息(properties, xml, yaml 等)注册到配置中心,实现守护程序包在开发、测试、生产环境的无差别性,方便守护程序包的迁移。
  • API 管理:以方便的形式编写及更新 API 文档,并以方便的形式供调用者查看和测试。
  • 集成框架:微服务组件都以职责单一的守护程序包对外提供服务,集成框架以配置的形式将所有微服务组件(不为甚是管理端组件)集成到统一的界面框架下,让用户不不 在统一的界面中使用系统。
  • 分布式事务:对于重要的业务,不不 通过分布式事务技术(TCC、高可用消息服务、最大努力通知)保证数据的一致性。
  • 调用链:记录完成两个 业务逻辑时调用到的微服务,并将这种 串行或并行的调用关系展示出来。在系统出错时,可不不不 方便地找到出错点。
  • 支撑平台:系统微服务化后,系统变得更加碎片化,系统的部署、运维、监控等都比单体架构更加冗杂,如此,就不不 将大主次的工作自动化。现在,可不不不 通过 Docker 等工具来中和哪此微服务架构带来的弊端。 累似 持续集成、蓝绿发布、健康检查、性能健康等等。严重点,以我们我们我们两年的实践经验,可不不不 如此说,如此 如此大概的支撑平台或工具,就何必 使用微服务架构。

微服务架构的优点:

  • 降低系统冗杂度:每个服务都比较简单,只关注于两个 业务功能。
  • 松耦合:微服务架构法律妙招 是松耦合的,每个微服务可由不同团队独立开发,互不影响。
  • 跨语言:假如有一天符合服务 API 契约,开发人员可不不不 自由取舍开发技术。这就导致 开发人员可不不不 采用新技术编写或重构服务,如此 服务相对较小,过多这何必 会对整体应用造成过多影响。
  • 独立部署:微服务架构可不不不 使每个微服务独立部署。开发人员不不协调对服务升级或更改的部署。哪此更改可不不不 在测试通如此 立即部署。过多微服务架构也使得 CI/CD 成为如此 。
  • Docker 容器:和 Docker 容器结合的更好。
  • DDD 领域驱动设计:和 DDD 的概念契合,结合开发会更好。

微服务架构的缺点:

  • 微服务强调了服务大小,但实际上这并如此一个 统一的标准:业务逻辑应该按照哪此规则划分为微服务,这四种 过多两个 经验工程。其他开发者主张 10-400 行代码就应该建立两个 微服务。虽然建立小型服务是微服务架构崇尚的,但要记住,微服务是达到目的的手段,而不不 目标。微服务的目标是充分分解应用守护程序,以有利于敏捷开发和持续集成部署。
  • 微服务的分布式特点带来的冗杂性:开发人员不不 基于 RPC 如此 消息实现微服务之间的调用和通信,而这就使得服务之间的发现、服务调用链的跟踪和质量大问题变得的相当棘手。
  • 分区的数据库体系和分布式事务:更新多个业务实体的业务交易相当普遍,不同服务如此 拥有不同的数据库。CAP 原理的约束,使得我们我们不不 得不放弃传统的强一致性,而转而追求最终一致性,这种 对开发人员来说是两个 挑战。
  • 测试挑战:传统的单体WEB应用只需测试单一的 REST API 即可,而对微服务进行测试,不不 启动它依赖的所有其他服务。这种 冗杂性不可低估。
  • 跨多个服务的更改:比如在传统单体应用中,若有 A、B、C 两个 服务不不 更改,A 依赖 B,B 依赖 C。我们我们我们只需更改相应的模块,很久一次性部署即可。很久在微服务架构中,我们我们我们不不 仔细规划和协调每个服务的变更部署。我们我们我们不不 先更新 C,很久更新 B,最后更新 A。
  • 部署冗杂:微服务由不同的少量服务构成。主次服务如此 拥有各人的配置、应用实例数量以及基础服务地址。这里就不不 不同的配置、部署、扩展和监控组件。此外,我们我们我们还不不 服务发现机制,以便服务可不不不 发现与其通信的其他服务的地址。很久,成功部署微服务应用不不 开发人员有更好地部署策略和高度自动化的水平。
  • 总的来说(大问题和挑战):API Gateway、服务间调用、服务发现、服务容错、服务部署、数据调用。

微服务要补救的大问题

后面 提到了,dubbo还处于其他大问题 ,虽然dubbo处于的大问题 过多 微服务要补救的大问题,这里 再总结一下。当然,dubbo和微服务的侧重点不一样,dubbo侧重于内部接口之间的RPC,而微服务则侧重于对外提供服务。

  • 统一入口
  • 安全控制:防刷限流
  • 统一鉴权:应用鉴权、用户鉴权、OAuth鉴权、ACL
  • 协议转换:http、dubbo、Protobuf
  • API配置管理
  • API上线、下线
  • API与服务接口映射
  • 监控与报警
  • 整体架构的可拓展、高并发、分布式
  • 服务容器自动收缩、扩容

实现方案

  • 负载均衡层:nginx/lvs/F5
  • 微服务层

    高性能服务网关;

    统一入口、API配置管理、分流鉴权、服务监控、协议转换;

    API映射、OAuth2.0、API文档管理;

    分布式、可拓展;

  • 服务治理层

    性成长期是什么是什么图片 是什么是什么图片 是什么的一句话期的服务治理框架dubbo;

    MQ服务之间解耦;

  • 弹性云

    服务docker化;

    基于访问压力的实时集群调度与管理;

弹性云

这里简单介绍一下弹性云的概念,微服务要想提供好服务,保证API可不都能不能了挂掉很久有好的性能,不不 很高的运维要求。这里的弹性云便是自动化运维补救方案,对访问压力进行监控,根据监控补救调度应用的发布和回收。

服务网格(Service Mesh)

2017 年底,非侵入式的 Service Mesh 技术从萌芽到走向了性成长期是什么是什么图片 是什么是什么图片 是什么的一句话期。

Service Mesh 又译作“服务网格”,作为服务间通信的基础设施层

如此 用一句话来解释哪此是 Service Mesh,可不不不 将它比作是应用守护程序如此 说微服务间的 TCP/IP,负责服务之间的网络调用、限流、熔断和监控。对于编写应用守护程序来说一般何必 关心 TCP/IP 这种 层(比如通过 HTTP 协议的 RESTful 应用),同样使用 Service Mesh 也就何必 关系服务之间的哪此如此 是通过应用守护程序如此 其他框架实现的事情,比如 Spring Cloud、OSS,现在假如有一天交给 Service Mesh 就可不不不 了。

Service Mesh 的来龙去脉:

  1. 从最原始的主机之间直接使用网线相连
  2. 网络层的出现
  3. 集成到应用守护程序内部的控制流
  4. 分解到应用守护程序内部的控制流
  5. 应用守护程序的中集成服务发现和断路器
  6. 出现了专门用于服务发现和断路器的软件包/库,如 Twitter 的 Finagle 和 Facebook 的 Proxygen,这如此 还是集成在应用守护程序内部
  7. 出现了专门用于服务发现和断路器的开源软件,如 Netflix OSS、Airbnb 的 synapse 和 nerve
  8. 最后作为微服务的后面 层 Service Mesh 出现

Service Mesh 有如下有几只特点:

  • 应用守护程序间通讯的后面 层
  • 轻量级网络代理
  • 应用守护程序无感知
  • 解耦应用守护程序的重试/超时、监控、追踪和服务发现

Service Mesh 架构图:

关于微服务和服务网格的区别,我的其他理解:微服务更像是两个 服务之间的生态,专注于服务治理等方面,而服务网格更专注于服务之间的通信,以及和 DevOps 更好的结合



---------------------

Reference: 1,微服务架构初探

2,浅谈服务治理与微服务 

3,哪此是Service Mesh(服务网格)

猜你喜欢

东航一航班返航是怎么回事

更新时间:2019-09-0414:04:06来源:斗蟹游戏编辑:周公约我 【斗蟹资讯】东航一航班返航是为社 会 ?越来越来越来越多日本日本前前男友都真不知道,下面斗

2019-11-14

惠普 EliteBook 820 G2 12.5英寸笔记本参数,功能,与其他型号对比区别

基本参数笔记本型号EliteBook820G2上市时间2015年2月3日机身颜色黑色操作系统预装Windows8.1CPU外理器型号Intel酷睿i5外理器架构Broadwel

2019-11-14

S8世界赛中LPL最令人担心的战队:大赛容易断腿的IG

斗玩小编 来源:斗玩网 2018-09-2909:02:00

2019-11-14

【惠普 暗影精灵III代 15.6英寸游戏笔记本电脑(i7

产品评价好评度62%运行速快外型酷炫运行流畅运行超快十分流畅流畅度佳漂亮大方倍感舒适系统充裕质量上乘运行平稳电量充裕完整版评价(422条)好评(265条)中评(96条)差评(6

2019-11-14

69元!云麦腕力球开箱图赏:根本停不下来

3月2日,云麦发布了一款加压神器——云麦腕力球,已在有品上架,售价69元。腕力球被誉为“世界上最快的人工动力装置”,是由中国台湾发明家 家 家创造,利用“陀螺仪和角动量守恒

2019-11-14