微服务架构一直火,为什么服务化要搞懂?
- 时间:
- 浏览:0
- 来源:大发pk10_pk10和值_大发pk10和值
微服务架构,这 5 年左右突然被认可,是软件架构的未来方向。需要你们理解的是,为哪些需要服务化。比如微服务架构对企业来说,带来哪些价值?有啥弊端?
这里浅谈一下微服务架构,主要还是在理解 Why :为哪些需要服务化?
1.1 微服务架构
微服务架构,主就是我多了个 “微”。亚马逊有个粗粗的定义:有2个 微服务应用工程的所有开发、测试、运维加起来离米 6 到 8 被委托人,只需要有2个 披萨就可否聚餐了。
反例:都是有2个 Service 类组成的应用工程,发布成服务就是我微服务。另有2个 分的太小,理解微服务就很片面。杭州某金融大厂,另有2个 分的很细,造成了运维测试成本巨大。随后刚现在开始分了合,折腾...
1.2 怎么需要微服务?
由 SOA 架构 -> 微服务架构的转变,得理解为哪些微服务架构被广泛提到并实践。它补救了哪些哪些的问题图片,带来了哪些价值?
传统企业随后不必 企业的软件,大多不止一套系统,都是各个独立大系统的堆砌。整体所处的哪些的问题图片是:
- 扩展性差
- 可靠性不高
- 维护成本还很大
- 重复轮子不必
那末哪些哪些的问题图片,可否想到的补救方案就是我:
- 组件化
- 服务化
微服务架构,将各个组件随后模块分散到各个服务中,对整个系统实现解耦。那微服务架构强调的重中之重就是我业务系统需要完善的组件化和服务化。哪些是组件化?
组件化,即将有2个 大系统,按照一定的业务随后技术维度关注形式,拆分成独立的组件。目的是为了分而治之,为了可重用,为了减少耦合度。比如按照技术维度:搜索组件、缓存组件;按照业务维度:用户中心、支付中心等
组件化是都是不怎么中台的意思?阿里巴巴提出 大中台,小前台;就是我把组件化、插件化、服务化补救方案到极致。通过产品线公共业务随后技术下沉,形成各种技术随后业务中台
(图来自漫画守护进程员小灰)
2.1 那末服务化,不代表都是分布式或集群
分布式,就是我多个实例提供相同的服务。比如多个地方动车站上边,多个机器提供取票服务。多个地方,北京上海等,就是我多机房,多个取票服务一并组成了集群,形成分布式服务。那啥是服务化?
服务化,强调 “化”!核心就是我不同服务之间的通信。是一种以服务为中心的补救方案:
- 服务注册
- 服务发布
- 服务调用
- 服务监控
- 服务负载均衡
- 等等
2.2 那末服务化的架构哪些的问题图片
那末服务化前,举个例子,会更形象:
假设有个取票服务、买票服务、改座服务都需要验证下用户身份真实性,那末会所处下面的哪些的问题图片:
- 取票服务 -> 调用用户DB代码 -> 用户DB
- 买票服务 -> 调用用户DB代码 -> 用户DB
- 改座服务 -> 调用用户DB代码 -> 用户DB
明显的哪些的问题图片是:
- 代码重复:不同业务相同访问 DB 的 userDAO 代码逻辑。就是我每个服务这块代码是不同人维护的。
- 可维护性低:不同人维护;不同地方维护;每次 DB 字段改变随后迁库,全部业务都是修改
- DB 访问耦合
自然都是补救方案是:lib。维护有2个 user-DAO-lib 1.0.0 release 包,给各个业务方。
补救了哪些的问题图片,引入了新的哪些的问题图片,lib 升级是巨大而又漫长的哪些的问题图片。比如小李是维护 user-DAO-lib 的人,有一次写了隐蔽的 bug 。user-lib 升级到了 1.0.1 release,花了 1 个月左右时间,推几五个业务方升级完毕。就是我有些 bug 运行了几天出显了,考虑升级fix随后回滚都是巨大的成本
基于服务化,就可否完美补救哪些的问题图片。
如图 Post 文章服务调用 Video 视频服务,需要通过最上层的 Service 之间相互调用。服务化明显改变:
- DB 隔离:另有2个 底层细节设计可否屏蔽,后续换成有些存储 Cache 等对业务调用方无感知。
- 通过 Service 之间通信:具体协议可否 RPC / HTTP 等
服务化后的好处:
- 调用简单:不必写相同的访问用户服务代码,调用有2个 服务即可
- 代码复用:跟 lib 形式的代码复用有所区别在于,服务化通过通信的辦法 补救
- 业务隔离
- 数据库解耦
- 等等
1、一种不大的系统,业务不冗杂的系统就是我需要微服务架构。微服务架构会带来一定的冗杂性,是一套全部的服务治理方案
2、多个模块数据库,分布式事务是有2个
挑战
3、开发过程,增加了测试等一定的冗杂性
有利必有弊,具体场景具体选着
本小结,都是讲how,讲的是 why。上可否 懂 why ,并能更好地 do。从怎么服务化?到怎么微服务架构那末流行:
- 微服务扩展性高
- 微服务可靠性高
- 微服务 维护成本小
- 微服务几乎那末重复轮子
- 微服务直接调用调用简单
- 微服务业务隔离
- 微服务数据库解耦
- 等等
参考资料
- 精华资料 原文链接 http://www.bysocket.com/technique/architecture/2423.html
- 互联网架构,究竟怎么要做服务化?https://mp.weixin.qq.com/s/S6ga8y88qaAjbKjuKMrowQ
- https://zh.wikipedia.org/zh-sg/%E5%BE%AE%E6%9C%8D%E5%8B%99
该文章通过 https://openwrite.cn/ 工具创造并群发。