1

What is Microservices

 2 years ago
source link: https://discretetom.github.io/posts/microservices/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

本文是观看此视频时的笔记

软件架构风格的演变

  • Monolithic
    • 一个软件是一个整体,强耦合,依赖复杂
    • 虽然代码可能进行了模块化,但是架构没有模块化,无法适应分布式系统
    • 软件包越来越大,团队越来越复杂
    • 难以单独更新部分功能,难以部署、扩展、测试、迭代
  • SOA: Service Oriented Architecture
    • 面向服务的架构
    • 根据服务拆分架构
    • 通常使用消息队列/总线进行跨服务通信
    • 跨语言/跨环境
    • 部署的时候仍然是一起部署,难以分别扩展
  • Microservices
    • 通常使用REST/RPC API进行跨服务通信
    • 跨语言/跨环境
    • 易于单独扩展模块,物理资源利用率更高
    • 每个团队单独开发、部署、测试、迭代,有自己的pipeline,效率更高
    • 团队之间比较独立,对环境的维护(比如依赖包的版本控制)较为简单

微服务面临的问题

  • 资源管理
    • 原来的物理资源可能只是几个超级大的数据库、物理机,垂直扩展
    • 微服务化之后,可能是几千个小数据库、物理机,水平扩展
  • 监控
    • 如何监控、诊断、调试每个服务
    • 如何健康状态检查
  • 服务发现
    • 服务A扩展之后,服务B如何发现服务A中新添加的API/URL
    • 负载均衡器如何发现服务
  • 部署
    • 如何管理众多的流水线
    • 如何管理不同的环境与依赖
    • 如何控制部署在哪个物理机上

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK