微服务设计

1.微服务

1.1 什么是微服务

1.1.1 很小,专注于做好一件事  

        单一职责原则的理念。

1.1.2 自治性

        一个微服务就是一个独立的实体,它可以独立地部署在PAAS上,也可以作为一个操作系统进程存在。服务暴露出API,服务间通过API通信。

1.2 主要好处

1.2.1 技术异构性 

        可以用不同的技术栈来实现不同服务。

1.2.2 弹性

        降低整个服务不可用的问题。

1.2.3 扩展

        当存在性能问题时,可以只对需要扩展的服务进行扩展,把部分不需要扩展的服务运行在更小的、性能稍差的硬件上。

1.2.4 简化部署

        更改程序时,只需重新部署一个小服务,便于回滚和不影响整体功能。

1.2.5 与组织结构相匹配

        小团队模式更高效。

1.2.6 可组合型

        在微服务架构中,系统会开放很多接口供外部使用。当情况发生改变时,可以使用不同的方式构建应用,而整体化应用程序只能提供一个非常粗粒度的接口供外部使用。

1.2.7 对可替代性的优化

        重构、删除服务时方便。

1.3 面向服务的架构

        SOA(面向服务的结构)是一种设计方法,其中包含多个服务,而服务之间通过配合最终会提供一系列功能。一个服务通常以独立的形式存在于操作系统进程中。服务之间通过网络调用,而非进程内调用的方式进行通信。

2.如何建模服务

2.1 什么样的服务是好服务

2.1 松耦合

        能够独立修改及部署单个服务而不需要修改系统的其他部分。

2.2 高内聚

        把相关的行为放在一个服务里

2.2 逐步划分

        先考虑比较大的、粗粒度的,然后当发现合适的缝隙后,再进一步划分。

3.集成   

3.1 寻找理想的集成技术

  • 避免破坏性修改
  • 保证API的技术无关性
  • 使你的服务易于消费方使用
  • 隐藏内部实现细节

3.2 为用户创建接口

3.3 共享数据库

        使用数据库集成会使高内聚和低耦合失效,外部系统能查看内部实现细节并绑定。

3.4 同步与异步

        同步——请求/响应

        异步——基于事件

3.5 编排与协同

        编排——依赖于某个中心大脑,“上帝”,很容易知道异常

        协同——异步订阅,消除耦合,但需要监控系统

        请求/响应方式可以考虑RPC(Remote Procedure Call,远程过程调用)、REST(REpresentational State Transfer,表述性状态转移)。

3.6 RPC       

  • 技术的耦合
  • 隐藏远程调用的复杂性,会花大量时间对负荷进行封装和解封装
  • 网络不可靠
  • 脆弱性,一处更改服务器和客户端都要改

3.7 REST

        资源、消费者

3.8 版本管理

        版本共存,v1、v2,允许平滑过渡。

4.分解单块系统

4.1 数据库

4.1.1 打破外键关系

        调用API来访问数据,而不是直接访问数据库。

4.1.2 共享静态数据

        放入配置文件或代码,比如国家代码。

4.1.3 共享数据

        通过API来查数据

4.1.4 共享表

        拆分表

5.规模化微服务

5.1 故障无处不在

        网络、硬件不可靠

5.2 功能降级

        某个服务不可用时,不要影响整个系统。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值