关于微服务:你问我答微服务治理应该如何去做

6次阅读

共计 2532 个字符,预计需要花费 7 分钟才能阅读完成。

【你问我答】是 BoCloud 博云最新上线的互动类栏目,每周咱们将收集和整顿无关容器、微服务、DevOps、多云治理等方面的 企业 IT 建设问题,由博云产品团队进行具体解答。如果你有任何感兴趣的相干问题,欢送留言发问。

以下是本周“ 微服务 ”相干问题精选:

网友 1:微服务治理应该如何去做?

微服务化应该是从企业的单个零碎思考,还是从整体 IT 架构去思考?微服务治理应该如何去做?

博云产品团队: 微服务的治理分很多方面,简略的来谈至多三个层面:

1.  微服务底层治理 ,微服务之所以须要治理,是因为其逻辑简单,运维艰难,所以须要提供注册核心,配置核心,网关,监控等多种组件做为帮忙,所以这个层面是对这些组件的治理。

  1. 微服务外层治理 ,次要关注于用户的应用,这就波及到 DevOps,须要对服务的全生命周期做治理,从想法到实现,再到更新降级。当然这里很重要的一块就是用户权限等问题,部门角色也不可疏忽的。

3. 从微服务的业务层治理 ,算是微服务的下层治理,这一层次要关注于服务的业务实现,跟踪业务的调用链,发现调用过程中的逻辑问题,效率问题,冗余问题等等。

网友 2:微服务框架,容器云,ServiceMesh、传统 API Gateway 产品都提供注册发现,它们各适宜什么场景?如何选型?

服务化架构中,服务注册和发现是重要的组件,微服务框架中有注册发现,比方 Eureka, consul 等,容器云也提供服务注册和发现,ServiceMesh、传统 API Gateway 产品也有注册发现,它们各适宜什么场景?如何选型?

博云产品团队: 服务注册是指服务提供者将本身信息上报至平台,服务发现是服务消费者到平台查找本人须要的服务。

1. 微服务框架中,服务是由本身启动,并将信息注册到注册核心,如果不加服务注册信息,那么平台将不晓得也不能管制该服务。而且微服务框架下,平台是被动的,不能实现服务资源的被动调度。

2. 容器云,当初个别都是应用 kubernetes 做为容器的调度,服务的启动都是以 pod 的模式,以 service 向外提供服务。从平台的角度来说无需服务注册与发现。kubernetes 具备弱小的服务资源调度能力,所以服务的启停平台占据主动权。与微服务框架相比,服务原生的负载平衡、访问控制将被破除,而由 kubernetes 提供,但性能较弱。

3. ServiceMesh 能够说是微服务框架的一个升级版,让服务只专一于服务本身的性能,将其外部的服务注册、负载平衡、网络等性能,全副拆出来,以依赖服务的模式存在。其实这里的服务注册与发现,与微服务框架的理念没有太大差异。

4. 传统 API Gateway,在微服务框架中也是常常应用的组件,次要是用来管制服务拜访的,不论是外部服务间,还是向内部提供业务,次要是用来做安全控制的,当然其余性能还有很多。

网友 3:咱们处在微服务 + 容器的转型摸索期间,微服务框架:Dubbo、Spring Cloud、Service Mesh 等发展趋势探讨?

博云产品团队: 纯正微服务开发,不思考服务线上运维的要求,spring cloud 是首选,组件多,生态好。

基于通信提早要求较小的状况下,采纳 rpc 协定比 http 协定通信要好一些,dubbo 占优势 service mesh 是解决服务通信的基础设施,自身与微服务无关。

如果思考容器化的形式部署,spring boot+kubernetes+spring cloud 局部组件会更好一些,能够无效的缩小组件依赖以及链路调用关系。

网友 4:微服务拆分的准则?

按分享的教训来看,是须要将无关的性能都进行拆分,我了解就是原子化拆分。但事实业务场景中对于传统的利用零碎,曾经存在了大量的业务逻辑解决。这种迁徙是一个比拟长期且苦楚的事件,如何解决?

博云产品团队: 服务拆分大的前提能够参考 DDD 畛域驱动设计。进一步讲,业务须要思考三方面问题:1. 服务边界切分;2. 服务依赖梳理;3. 服务交互标准规范。

  • 服务边界切分须要依赖“低耦合,高内聚”的准则,明确业务单元的边界,尽可能减少同一个业务的不同服务单元的调用依赖。
  • 服务依赖,须要明确一个业务形成过程中的服务依赖关系,避免出现回环依赖,双向依赖的场景。最好的形式是实现链式依赖调用。
  • 服务交互标准,从协定以及数据传输标准层面阐明服务与服务之间的交互方式,包含采纳的通信协议,数据传递格局等;

服务迁徙的过程中,首先要思考接口变动状况,对于前后端拆散的架构,能够采纳 restful 的形式进行,尽可能防止接口的频繁变更。同时复用原有的业务代码实现。线上迁徙过程中,能够利用负载路由的管制实现逐渐公布。

网友 5:微服务架构下底层数据存储的实现形式?

从分享的资料来看,应用了分布式的多个数据库存储,从而达到高并发反对。在这种架构下,数据一致性的要求就很高,是否具体阐明一下底层数据的同步形式?

博云产品团队: 无论是否采纳微服务架构,针对高并发的反对的状况,数据存储能够分为两个阶段:第一长久化存储;第二缓存。

针对长久化存储,首先微服务架构的各个服务是分库存储,针对不同的数据类型,能够采纳不同的数据长久化引擎。例如关系型数据能够采纳 mysql 做数据长久化引擎,时序数据能够采纳 influxdb,以及其余善于存储不同数据类型的长久化引擎。然而须要留神集群化部署时的数据同步,数据备份以及故障切换等问题。针对缓存的,是对数据库的补充,可能无效的防止平庸操作数据库,导致申请提早增大的成果。

针对数据同步以来 CAP 原理,首先须要思考业务需要,须要满足强一致性,还是最终一致性来保障。依据不同的个性,能够抉择其余的存储引擎,例如 etcd,zookeeper,consul 等。

网友 6:微服务的高可用次要用什么办法保障高可用呢?硬负载平衡设施,还是软负载形式保障?

博云产品团队: 高可用有两种不同的形式:主从,双活。与具体采纳的服务架构关系绝对没有那么严密。软负载,或者硬负载在我的项目的施行过程中都会遇到。从实用场景而言,软负载更多实用在内网环境,外部服务与服务的交互接口处;硬负载更多出现在整个利用的入口处,除了负载以外同时蕴含局部网关的性能。

下周预报:

对于“DevOps”,任何你感兴趣或者想理解,欢送留言,下周咱们将为大家解答无关 DevOps 建设的相干问题。

正文完
 0