API Gateway
端->网关层->BFF层->微服务层
BFF,即 Backend For Frontend 又称为用户体验适配器
向无线端 设备暴露友好和统一的API,方便无线 设备接入访问后端服务
DFF,Design For Failure 容错设计
批量上传订单失败,但是不知道是哪个订单导致了失败,因为系统并没有告诉用户是那几行有问题(容错)
我们要基于用户是吗非常不靠谱的来设计和开发我们的系统,随便用户怎么搞,我们的系统就是屹立不倒,当用户输入错误的数据时,能很nice地告诉用户你哪里哪里错了
除了用户会出错,网络也会出错,磁盘也会出错,服务器也会出错
时刻谨记保持 服务契约(接口)的兼容性
组件服务化
传统实现组件的方式是通过库 (library)
微服务 端 + 网关接入 + 服务 + 基础设施
基础设施自动化:开发、调试、测试、部署、监控
每个服务面临的 业务场景不同,可以针对性的选择 合适的技术解决方案。但也需要避 免过度多样化
每个服务独享自身 的数据存储设施(缓存,数据库 等)
微服务和分布式应用
RPC(远过程调用)在分布式系统中是很常用的基础通讯手段,核心思想是将不同进程之间的通讯抽象为函数调用。
RPC接口 时序清晰,逻辑简单,和普通的函数调用完全等价。
毛病:
网络通讯的延迟会严重的制约请求-响应式RPC的响应速度
微服务和soa
soa指的是面向服务编程
服务中心化(ESB<->app)
微服务划分
小的服务代码少,bug 也少, 易测试,易维护,也更容易不断迭代完善 的精致进而美妙。
服务去中心化,不同的服务可以采用不同的sql/nosql数据库技术。
每一个服务都有自己的数据库持久化业务数据(mybatis-mapper/entity/dao)
通过调用微服务可以实现多个数据库
案例
1 app/h5 获客户 – 客户管理子系统(db1)
2 普惠平台新增客源 – db2
3 更新完实现app通知 – db1