微服务与传统web

微服务

传统 web 开发

特点

  1. 功能都在一个包中
  2. 没有外部依赖
  3. 部署在一个 servlet 容器中

优势

  1. 集中式管理
  2. 基本不会重复开发
  3. 功能在本地,不需要进行分布式管理

劣势

  1. 开发效率低
  2. 代码维护成本高
  3. 部署时间长
  4. 稳定性不高
  5. 拓展性不够

微服务开发

特点

  1. 多个独立服务组成一个完整的系统
  2. 独立部署
  3. 服务之间独立开发业务
  4. 分布式管理
  5. 按照业务划分服务

优势

  1. 开发简单
  2. 技术选择灵活
  3. 可用性高
  4. 按需求拓展业务

劣势

  1. 多个服务的运维难度
    • 单体架构只需要保证一个项目正常运行,微服务项目中需要保证多个正常运行
  2. 系统集成
  3. 测试
    • 各个服务自身的 junit 测试
    • Pair 集成测试
    • Contract 集成测试
    • 契约测试
      • 金字塔理论: https://martinfowler.com/bliki/TestPyramid.html
      • Integration Tests Are a Scam : http://blog.thecodewhisperer.com/permalink/integrated-tests-are-a-scam
  4. 接口调整成本高
    • 服务A修改了接口,其他调用者也需要同步修改
  5. 服务间通讯
    • RPC \ REST
  6. 性能监控
  7. 拆分服务的难度
    • 单一职责
    • 界定业务范围
  8. 数据一致性
    • sagas 模式
  9. 公共代码的开发
    • 多个服务存在相同功能,该功能没有达到可以拆分微服务的程度.一般会使用公共库来解决,但是多语言环境下公共库似乎不是那么优秀.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值