# HTTP

### 痛点

1. 代码到处拷贝
2. 复杂性扩散（分库分表问题）
3. 库的版本维护与业务线之间代码的耦合
4. SQL质量得不到保障，业务相互影响
5. 疯狂的DB耦合

### 关于RPC

1. 业内对微服务的实现，基本是确定一个组织边界，在该边界内，使用RPC; 边界外，使用Restful。这个边界，可以是业务、部门，甚至是全公司。
2. 统一序列化、反序列化、网络框架、连接池、收发线程、超时处理、状态机等业务之外的重复技术劳动
3. RPC框架的职责是：让调用方感觉就像调用本地函数一样调用远端函数、让服务提供方感觉就像实现一个本地函数一样来实现服务

### 架构

![](https://cdn.nlark.com/yuque/0/2018/jpeg/103176/1535337051259-ad9beed6-24d7-40ff-96b6-70b753c036ad.jpeg)

### 解决的问题

基于数据库表、Redis实现服务

1. 存储层未隔离，数据不可迁移调整，耦合性极高
2. 扩展性、可维护性极差

### HTTP+JSON 的Web API

1. 解决了耦合 问题，可以提供良好的服务隔离
2. 优点：目前最通用的服务治理方案
3. 缺点：Http不支持并发，长连接支持差，不支持订阅与消息主动推送。
