微服务设计学习(一)

微服务是分布式系统的解决方案,将服务细颗粒化。不同的服务之间协同工作,每个服务都有自己的生命周期。

微服务(什么是微服务?)

微服务就是一些协同工作的小而自治的服务。协同工作和自治很好理解,但代码库多小才算小哪,当你不再感觉代码库"过大",说明它就足够小了。服务越小,微服务架构的优点和缺点就更明显。使用的服务越小,独立性带来的好处就越多,但是管理大量的服务越会越复杂。

  • 微服务的好处
    • 技术异构性:多个服务之间不会有语言的限制
    • 弹性:微服务可以很好地处理服务不可用和功能降级的问题
    • 扩展:对活跃服务和不活跃服务进行不同的扩展
    • 部署简单:各个服务独立部署,即使处理问题也可以快速定位或回滚

优秀的架构师(架构师应该承担哪些职责?)

我们可以把架构师比作城市规划师,而分服务可以看作城市的分区,服务的边界就可以看作不同区的边界。

  • 优秀的架构师应该承担哪些职责
    • 远景
    • 同理性
    • 合作
    • 适应性
    • 自治性
    • 治理
    • 业务和技术同样重要

如何建模服务(怎样区分微服务的边界?)

  • 什么样的服务是好服务

    • 松耦合:可以想想我们通常说的解耦
    • 高内聚:把相关的行为聚集在一起,把不相关的行为放在别处
  • 区分边界

    • 界定上下文
    • 区分服务和模块
    • 避免过早划分为服务,很多时候,将已有的代码库划分微服务,比从头开始构建微服务要简单得多。

集成(服务之间怎么通信?)

  • 理想的集成技术
    • 避免破坏性修改
    • 保证 API 的技术无关性
    • 方便消费方使用
    • 隐藏内部实现细节
  • 同步通信 or 异步通信
  • 协同 or 编排
  • RPC or REST
  • JSON or XML
  • 版本管理
  • 第三方服务的集成

分解单块系统(分解单块系统的原因、以及怎样分解)

  • 原因

    • 改变服务的更新速度
    • 优化团队结构
    • 信息安全
    • 技术、语言的更新更容易
  • 怎样分离

    • 分离代码
    • 分离杂乱的依赖
    • 分离数据库
    • 分离静态资源(通常情况放在配置文件中解决)
    • 分布式事务(尽量避免)

部署(服务怎样部署?)

  • 持续集成(Continuous Integration)
  • 将持续集成映射到微服务
  • 持续交付
  • 环境配置区分
  • 服务和主机
    • 单主机多服务
    • 应用程序容器
    • 单主机单服务
    • 平台即服务(Platform-as-a-Service)
  • 自动化部署
  • 虚拟机
    • vagrant
    • Linux 容器
    • docker
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值