分布式 | 微服务的演进

583 阅读2分钟

这是我参与8月更文挑战的第17天,活动详情查看:8月更文挑战

一、官方定义

  • 微服务是由单⼀应⽤程序构成的⼩服务
  • 拥有⾃⼰的进程与轻量化处理,服务依业务功能设计
  • 以全⾃动的⽅式部署
  • 与其他服务使⽤HTTP API通讯
  • 同时服务会使⽤最⼩规模的集中管理 (例如Docker)技术,服务可以⽤不同的编程语⾔与数据库等。

二、微服务之前单体应用

优点

  • 学习成本低,开发上手快
  • 测试、部署、运维比较方便
  • 一个人能Carry全场

缺点

  • 部署效率低下
  • 团队协作开发成本高
  • 系统高可用性差
  • 线上发布变慢

三、服务化

解决的问题

  • 为单体应用的缺点而生
  • 解决单体应用膨胀、团队膨胀耦合度高、协作效率低下

概念

把传统的单机应用中通过JAR包依赖产生的本地方法调用,改造成通过RPC接口产生的方法调用。

四、微服务

概念

从2014年开始,随着

  • 移动互联网规模的不断扩大
  • 敏捷开发
  • 持续交互
  • 以Docker为代表的容器化技术的成熟
  • 以及DevOps⽂化的兴起
  • 服务化的思想进⼀步演化

单体演变为今天我们所熟知的微服务,较之于单体化

  • 服务拆分粒度更细

    微服务可以说是更细维度的服务化,⼩到⼀个⼦模块,只要该模块依赖的资源与其他模块都没有关系,那么就可以拆分为⼀个微服务

  • 服务独立部署

    每个微服务都严格遵循独⽴打包部署的准则,互不影响。⽐如⼀台物理机上可以部署多个Docker实例,每个Docker实例可以部署⼀个微服务的代码

  • 服务独立维护

    每个微服务都可以交由⼀个⼩团队甚⾄个⼈来开发、测试、发布和运维,并对整个⽣命周期负责

  • 服务治理能力要求高

    因为拆分为微服务之后,服务的数量变多,因此需要有统⼀的服务治理平台,来对各个服务进⾏管理。

划重点

单体无法解决的业务复杂问题,别指望微服务能帮你解决。