gydtep 发表于 2020-12-1 12:16:24
控制复杂性。由于业务的复杂性,需要我们用更好的手段帮助研发组织克服认知障碍,更好的分工协作。分而治之,关注点分离等手段皆是如此。gydtep 发表于 2020-12-1 14:23:54
谈事件驱动架构 (EDA - Event Driven Architecture),我们首先来解释一下什么是事件。事件是指对已经发生的事情、状态变化等的记录。它们是不可变的(无法更改或删除),并且按其创建顺序排序。相关各方可以通过订阅已发布的事件来获取有关这些状态变化的通知,然后使用所选择的业务逻辑根据这些信息采取操作。gydtep 发表于 2020-12-1 14:52:48
事件驱动架构实现了事件的生产者和消费者的彻底解耦。生产者无需关注事件如何被消费,同时消费者无需关注事件的生产方式;我们可以动态添加更多消费者而不影响生产者,可以增加消息中间件对事件进行动态路由和转换。gydtep 发表于 2020-12-1 18:54:35
此外,对应用状态的持久化也尽可能通过分布式存储或者云服务等实现,这样可以大大提升应用架构可伸缩性和自愈能力。gydtep 发表于 2020-12-1 20:02:35
同时在新的微服务架构中已经内置了可观测探针,比如在 SpringBoot 的 2.3 发布了两个新的 actuator 地址,/actuator/health/liveness 和 /actuator/health/readiness ,前者用作存活探针,后者用作就绪探针。业务应用可以通过Spring系统事件机制来读取、订阅、修改 Liveness State 和 Readiness State ,这样可以让 Kubernetes 平台可以做更加准确的自愈和流量管理。gydtep 发表于 2020-12-1 21:47:15
在物理机或虚拟机集群时代,我们管理的资源主要是以主机为单元的集群。单个主机节点,可以是一台物理机,或者是基于Hypervitor虚拟化中间件的VM,资源类型主要包括CPU,内存,磁盘IO,以及网络带宽。gydtep 发表于 2020-12-2 09:49:07
Ingress与Service对象不同,是K8S对集群外部提供服务的一种资源对象。在K8S出现之前,我们对于负载与流量控制,多是采用Nginx反向代理和负载均衡,横向扩展服务端处理负载的能力。gydtep 发表于 2020-12-2 12:04:41
当负载过大时,即使容器进程一直处于健康状态,仍有可能出现该应用服务无法正常提供服务。这种情况,K8S是通过readinessProbe进行检测的。gydtep 发表于 2020-12-2 16:58:08
K8S提供了一个平台级别的DNS服务,可以配置给所有Pod使用。当一个Service资源对象被创建,DNS服务可以绑定一个DNS访问地址到对应Pod,供访问使用。这个DNS服务管理着应用服务DNS访问地址与Pod启动时分配的ClusterIP和port的对应关系,负责解析从该DNS访问地址过来的流量负载到对应的Pod上。gydtep 发表于 2020-12-3 06:36:15
古人云:“纸上得来终觉浅,绝知此事要躬行。” 学习领域有所谓721模型:个人的成长70%来自于岗位实践,20%来自向他人学习,10%来自于培训。虽然这种理论存在争议,但对于工程师们来说,按照实践、学习和培训的方式进行重要性排序,大致是不错的。所以重视实践,在实践中成长是最重要的学习原则。