说明
记录一些需要关注的事情。
kubernetes 相关项目进展跟踪
kubernetes
容器技术
《docker/moby/docker-ce 与 docker-ee 的关系和获取方法》
能力扩展
网络方案
- containernetworking/cni
- containernetworking/plugins
- coreos/flannel
- cilium
- calico
- kube-ovn
- ovn-kubernetes
镜像管理
CNCF 项目
CNCF:cncf blog
沙盒项目:
孵化项目:
毕业项目:
参考
SAAS 服务收集与进展跟踪
发号器
参考
应用配置中心项目跟踪
参考
高速缓存系统进展跟踪
kv 缓存
codis 和 twemproxy 是 proxy, 前者解决了 redis 无法水平扩展的问题,后者同时解决了 redis 和 memcached 无法水平扩展的问题。这两个项目都已经多年不更新。现在 redis 支持 cluster 模式,水平扩展不再是问题。
很明显,有了 kubernetes 之后,不再需要单独维护一个巨大无比的支持多租户的缓存集群,把缓存做成 operator 直接部署在用户侧即可,不仅实现简单,还实现了天然的隔离。如果担心用户应用影响 kubernetes 集群的稳定性,可以为缓存等基础服务单独准备一个 kubernetes 集群,实现基础服务与业务系统的分离。
redis cluster 的设计
Redis cluster 实现了两个功能:
- 自动将数据分散到多个 redis 实例;
- 部分 redis 实例故障时,整体依旧可用。
通过以下方式实现上述功能:
- redis 实例启动两个 tcp 端口,6379 服务于客户端,6379+10000 用于 redis 间通信
- key 在多个 redis 实例间分配,hash slot 容量为 16384(2^14),哈希算法 CRC16
- 多 key 操作的目标必须在同一个 slot 中,写入 key 时用 hashtag 保证,{hashtag}key
- 每个 redis 实例通过 master-slave 的方式保证高可用
- redis cluster 非强一致性,数据异步同步,存在丢失的可能性(master 宕机/集群分裂等)
- redis clsuter 支持 reshard,但是不支持自动 reshard @2020-01-04 21:00:36
- 通过手动 faileover 的方式升级
- 支持 salve 自动迁移,保证每个 master 的副本数
更多细节:
参考
网关网格系统进展跟踪
网关、网格与 服务框架 的区别在哪里:
- 网关网格是语言无关、非植入式
- 服务框架是语言相关、植入式
服务框架基本上来说就是一个提供服务地址发现的「注册中心」,通过用户端植入的 sdk 实现更丰富的功能。植入带来耦合,维护和适配的成本非常高。通过网关或者网格实现微服务的治理是正确的发展方向。
实践分享
在40并发、1600RPS的情况下,cNginx的延时增加0.4ms(相比直连),Envoy(社区版本,优化前)Client Sidecar模式延时增加0.6ms(相比直连)。
istio 与 knative 的实践,knative 是 serviceless,当前需要 Ambassador、gloo 和 istio 三者之一作为 ingress。
参考
函数计算最新进展跟踪
参考
服务框架系统进展跟踪
非常明显,未来属于 网格。
不过服务框架的发展依然值得关注,植入有植入的优势,虽然未来属于非植入式的,但是很多问题和方法是通用的。
主要问题:
- 服务注册信息的维护:分布式、更新及时、一致性与分区容忍
- 负载均衡策略
- 熔断限流策略
- 认证、牵引的更多策略
- 状态测度
bilibili/kratos
kratos 是 bilibili 研发并使用的服务框架系统。
公开分享资料:B站在微服务治理中如何探索与实践?
- 分布式 discovery 组件负责服务信息的维护
- 植入客户端,客户端执行负载均衡
- 熔断限流当前不是全局的,疑似在客户端实现
限流算法进化:
- 单机令牌桶算法:常规限速,配置不灵活
- Hystrix 熔断算法:当请求失败比率达到一定阈值之后,熔断器开启,无差别熔断
- Google SRE 弹性熔断算法:弹性熔断是根据成功率进行调整的,当成功率越高的时候,被熔断的概率就越小
- 基于 BBR 算法的自适应限流:用 CPU\IOPS 计算出最大承载量,超出的请求入队等待
参考
操作系统进展跟踪
kernel
发行版
参考
消息队列系统进展跟踪
消息队列
参考
数据库系统进展跟踪
关系型数据库:
图数据库:
参考
分布式存储系统进展跟踪
参考
日志系统进展跟踪
参考
监控系统进展跟踪
- prometheus
- thanso:prometheus 数据转存