微服务
- 多个服务间调用时,要注意网络失败。可以考虑成熟框架来制定网络重试的策略,并优雅处理失败
- 单一的 请求-应答 模型稳定是稳定了,就是效率不高。考虑批量处理或者流式处理。
- API 网关可以缓存一些信息,不要让用户每次请求都带一堆验证信息。尽量减少消息大小。
- Https的加解密往往是一个性能损耗点。
- 移动客户端发起一次网络连接代价非常大(7-8秒),API网关设计时应考虑到这点,尽量减少用户在多个不同服务之间不断连接。
- IAAS (Infrastructure as a service), PAAS (Platform as a service), SAAS (Software as a service),每层都可以选择使用成熟的技术,只关注自己的服务所需要实现的功能即可
- 设计良好,基于Ngix网关可以处理20-30w的并发
大数据
- Yarn: 当机也能恢复
- 当机器多到一定的程度的时候,就可能出现硬件错误。设计系统时必须考虑硬件错误存在的可能性。
- 应将服务器节点视为时好时坏
- 如果某个节点出现了问题,应该立即将其从集群中踢掉。而如果节点在后面某段时间恢复过来了,必须遵循一定的规则才能回到集群。
- Raft 协议,可以用于确保数据的一致性
- 集群中通过某种算法,选择一个领导者。所有的请求都交给领导者
- 通过数据操作序列的位置,来确保数据的一致性。如果收到如下序号的