技术选型笔记
一、关于技术选型
孤尽老师在第一节课中提到架构的概念, 架构就是组成+决策,那么做技术选型就是 开发组件选择的一个决策过程。
1.1 技术选型考虑因素
- 降低开发成本
- 提高研发效率
- 考虑流行度,能不能招到合适的人来搞定这块。
1.2 微服务发展历史
单体应用 -> SOA(ESB) -> 微服务 -> 微服务落地(springboot + spring cloud) -> spring netflix
1.3 微服务架构和优势
- 业务隔离
- 并行开发
- 易于维护
- 单独部署
二、微服务选型
2.1 数据访问层选型
数据连接池选型对比:
2.2 消息中间件
功能不具备一票否决权
重性能、重扩展
技术栈、团队驾驭能力
2.3 远程调用框架
| 框架 | 公司 | 通讯协议 | 序列化协议 | 开发语言 | 注册中心 |
|---|---|---|---|---|---|
| Feign | Netflix | http | 二进制 | Java | 无 |
| Dubbo | Alibaba | tcp/http | 可扩展 | Java | 支持 |
| gRPC | http2 | protobuf | 跨语言 | 可实现 | |
| Thrift | tcp/http | 可扩展 | 跨语言 | 可实现 |
2.4 网关
网关分类
流量网关
- 全局性流控
- 防止Web攻击
- 屏蔽工具扫描
- 黑白IP名单
- 证书/加解密处理
业务网关
- 服务级别流控
- 服务降级与熔断
- 路由与负载均衡、灰度策略
- 服务过滤、聚合与发现
- 多级缓存策略
网关部署形式
单点网关
多点网关
网关选型对比
三、选型总结
选型有时也是拍脑袋的事情,一开始往往不一定能做出最好的决定。
一旦做出选择后,技术人员就是要把这个决定变成最好的决定,充分去学习和了解选型的技术。通过看文档,看源码,让技术框架发挥出他应有的能力。
大多时间不是选型的问题,是技术人员的驾驭能力问题。