前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >为什要微服务化?

为什要微服务化?

作者头像
WindWant
发布2023-06-07 17:17:28
1890
发布2023-06-07 17:17:28
举报
文章被收录于专栏:后端码事后端码事
micro service
micro service

一、大而集中式的服务

从 0 到 1 的堆砌式发展

一个服务承载所有,一个系统涵盖一切,这可能是大多数公司初创时的技术风貌。一切追求快速验证,快速响应,快速实现。

但是,伴随着业务的膨胀发展,相应的技术支撑要求也在不断提升。从最开始的一个简单的服务,不断地添枝加叶,各种各样的功能模块相继被堆砌式添加上去。慢慢的服务开始变得臃肿,繁杂。功能模块间相互交织,耦合,混乱不堪。

  • 同一个服务模块可能会在多个地方被不同方式的使用;
  • 一个数据可能被存多张表中,并且数据经常不一致;
  • 修改一个功能却不小心影响了其它功能;
  • 一个小小的变动却要重新上线整个服务,造成大量功能抖动;
  • 想要集成某些新特性,却因为现有繁杂的无关依赖冲突所扰;
  • 每个新来的人员都要都要花费大量时间去熟悉,梳理整个系统的面貌;
  • 面对新的业务需求支撑,往往捉襟见肘。
  • ... ... 等等

二、微服务化需要做哪些事情?

1、明确界限

最直接的问题就是,你要把整个集中式的大服务拆成哪几个服务?

这并不是一个容易的问题,它不仅仅是技术方面的问题,更多的要考虑到业务的界限。

比如,对于一个社区,可以基本的划分为用户、内容两块儿。

用户模块可以继续分为用户基础、访问、设置、权限等。

内容则可以继续细分为内容、审核、推荐、搜索等。

业务大了,每一块儿都会成为一个体量服务应用。

2、依赖定序

在明确了服务界限之后,就要进一步明确当前服务的脉络结构、流程链条、依赖关系等。

  • 哪些是上游服务?
  • 哪些是支持性的服务?
  • 哪些是最核心服务?
  • 哪些是最基础的服务?
  • 哪些是业务性不强,单纯地功能性依赖服务?
  • 哪些是对外依赖最小的服务?
  • 哪些是非核心却耗资源的服务?
  • ... ... 等等。

好了,知道了这些,我们就可以确定一个服务拆分的先后顺序。当然,顺序没有固定原则,每个公司可以根据当下的实际情况去调整。

一般来说,最基础的服务是依赖最多的,也是相对核心的,这个会作为第一顺序去拆解出来。比如,对于用户模块的用户信息服务,内容模块的内容服务等。后续的拆解的服务也可以此为基础,避免再去依赖旧服务。

另外,对于业务关联不强的服务,如短信,推送、图片等,也可以同步进行。尤其是对于图片、推送这些存在相对集中式耗费网络资源的,应该优先分离。

三、服务架构

架构需要考虑什么?

用什么?什么能支撑?能达到什么样的效果?

1、基础框架

什么是框架?

它是一种助力、一种经验总结的高效支持。

就像八股文,明确的行文格式(开篇、收尾、字数等),只需要往里填充内容就是一篇合格的八股文。

2、交互

微服务化后面临的最直接的问题是:服务间如何交互?

交互,其实无非两种方式:接口、消息。

两种方式不是只选其一,实际应用中,不同场景,往往需要结合使用。

3、治理

微服务化后,整体服务的复杂性由服务本身上升到了网络层。

  • 服务不可用怎么办?
  • 接口调用超时怎办?
  • 消息丢失、重复怎么办?
  • 流量突增怎么办?
  • 服务链路怎么链接起来?
  • ... ... 等等。

此时,你可能需要了解:服务注册发现、负载均衡、熔断降级、流量控制、服务重试、服务监控、版本管理、分布式配置中心、链路追踪、分布式日志系统等等一系列问题。

四、实施

抛开框架、结构层面的东西,其实最直接关系的是业务逻辑的迁移。而在这一点上,仔细、审慎则尤为重要。缺了、漏了、变更意图都是不能容忍的。

静态代码自检、共检 + 动态流量快照逻辑验证可以作为最基本遵循的原则。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-06-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、大而集中式的服务
  • 二、微服务化需要做哪些事情?
    • 1、明确界限
      • 2、依赖定序
      • 三、服务架构
        • 1、基础框架
          • 2、交互
            • 3、治理
            • 四、实施
            相关产品与服务
            负载均衡
            负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档