微服务

1.  SOA与MSA

1.     是什么

SOA是面向服务架构

MSA是微服务

2.     关系

MSA 是细粒度的SOA

3.     通信协议

通信协议经过这些年的发展,现在主流的基本上了两种:

1. 文本协议

使用最广泛的多是基于HTTP的RESTful规范

1. 轻量级二进制协议

Thrift、Protobuf,或者任何自定义的轻量级协议

4.     微服务的优点

实现简单、可维护性。

根据需求进行划分服务的大小。

服务可以单独进行开发、部署、测试。

数据分离。

5.     服务中的高并发解决

对于一个做内容的网站,高并发带来的直接挑战是大量数据(图片、文本)的获取,而对于写的需求相对而言并不会很高,所以CDN、缓存、网页静态化等都是可以采用的软硬件解决方案;

而对于电商类的交易系统,更重要的是保证系统的快速响应、持续可用、最终一致、和水平扩展,所以NIO、分库分表、缓存、API升降级、负载均衡都是可以采用的方案。

6.     常用技术

1)    基础设施

任何软件系统都是要部署到具体的基础设施上去的,关于基础设施的部署也有很多的选择,如:PC vs Docker、Apache vs Nginx、Tomcat vs Jetty。

2)    微服务框架

  1. Spring全家桶 
    用起来很舒服,只有你想不到,没有它做不到。
  2. Dubbox 
    很多国内的企业还在用,可以支持RESTful风格的API,但更多的还是会使用Dubbox的默认的基于RPC的API,调用远程API像调用本地API一样。这样做无疑带来了很多优势,但同时其基于接口的方式增加了服务间的耦合,怎么说呢,各有利弊。
  3. Thrift 
    如果你比较高冷,完全可以基于Thrift自己搞一套抽象的自定义框架。

3)    同步vs异步

在跨服务的业务逻辑的实现上,使用基于消息的异步调用,还是使用保证结果的同步方案。

4)    数据服务

内存数据库 vs 持久化数据库(Redis vs MySQL)

关系型数据库 vs 非关系型数据库(MySQL vs Mongo)

传统数据库 vs 分布式数据库(MySQL vs F1)

非关系型数据库又有如KV数据库,文档数据库,图数据库等。

由于MSA提倡服务间的数据隔离,往往不同的服务使用不同的数据源,这就会直接导致数据聚合查询比较困难的问题。进行数据聚合又有几种不同的方案(如CQRS)。

5)    日志分析

日志分析也是有很多的成熟解决方案(如ELK)。

 

发布了37 篇原创文章 · 获赞 17 · 访问量 1万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章