为什么 Istio 重回单体架构?

随着应用规模的不断扩大,单体架构已不能承载企业越来越多的业务需求,微服务架构随之兴起。微服务给我们带来诸多益处的同时也带来诸多挑战,其根源即是复杂性的提升。为了解决微服务带来的诸多问题,其中便催生了服务网格的流行。但2020年初,业内最知名的服务网格实现Istio却反其道而行之,由微服务架构重回单体架构,其原因是什么呢?可能是一个契机,让我们重新审思微服务架构带来的好处及问题。 1 微服务架构有什么优势? 将一个复杂的单体应用切分为按领域细分的微服务后,可以让团队聚焦所关注的领域,做到相互独立,彼此不受影响。其带来的优势主要有: 彼此独立交付,快速迭代 各自解耦的微服务,可以让彼此间有明确的边界,各自可以采用不同的语言或技术栈,基于轻量协议(HTTP,RPC等)进行交互。每个微服务可以拥有自己的生命周期,无须相互协调或等待,做到彼此独立交付,相互不受影响。因粒度小,迭代快,从总体看,可以做到并行开发,流水线式产出。

阅读更多

什么是服务网格?

1 什么是服务网格? 服务网格是分布式软件系统内部用于管理所有“服务到服务”通信的一个系统。 聊服务网格为什么会出现之前,可以聊聊服务架构的演进过程。起初,我们使用一个单体应用来提供服务。 比如我们在做一个电商系统,采用典型的MVC三层架构,在单体架构中,组成这个系统的购物车功能,库存查询功能,订单功能等都是这个服务内部的一个函数或接口。所以这些操作都是进程内的函数调用,不涉及诸如RPC等服务与服务的跨进程通信。但随着时间的增加,我们发现单体架构越来越不能满足我们的需求,比如用户访问暴增,业务逻辑愈加复杂,一个单体的服务已不能满足功能及性能的要求。我们需要将其按业务领域拆分为几个独立的服务来对外提供服务,这就是微服务架构。比如原来的购物车功能,库存查询功能,订单功能被拆分为独立的服务。这时接收到一个购物请求,我们需要分别查询不同的微服务来进行业务处理,这就涉及跨进程通信。

阅读更多

记青龙山之行

这是一次难忘的登山旅行。 来大连三年,除有几次休闲性的登山外,未随驴友真正意义的爬一次山。这次,准备跟随专业的驴友爬一次山,初衷是想捡回时隔三年的登山习惯,感受登山的快乐。 28号,早上5点起床,穿上登山鞋,冲锋衣,带上太太前日已帮准备好的吃的,带了两瓶热水就出发了。6点半与驴友集合,坐上了去往目的地的小巴。他们多是常年登山的专业驴友,我是他们当中唯一的新人。约行2个半小时,到达目的地盖州青龙山。 眼前是层峦叠嶂的山峰,不算太高,魏延似青龙,山脚下是一个小湖,晨阳打在里边,波光粼粼。 刚开始兴致勃勃跟随队伍穿过几个小山坡,当开始真正的上爬模式时,才知道前路艰辛。气息加快,开始用嘴呼吸。常年不运动,身体非常吃力,腿上如绑铅块,难以行进,胳膊上没有力气,抓着石头攀爬,暼到脚下的深谷,感觉就要掉了下去。再看看随行的驴友,个个生龙活虎,如履平地,其中一位65岁的大爷,气息充足,当我毫无气力时,人家放声高歌。这鲜明的对比,真是羞愧难当。我用尽所有力气与全部意志跟随队伍穿越了这两个峰谷。

阅读更多

LeetCode 707 设计链表

1 题目描述 设计链表的实现。您可以选择使用单链表或者双链表来实现。 单链表中的节点应有val和next两个属性,val为当前节点的值,next为下一个节点的指针或引用。 若使用双链表实现,则需要一个额外的属性prev来指向当前节点的前一个节点。

阅读更多

Golang text/template 使用样例

Golang text/template 包是一个数据驱动的模版渲染工具。提供条件判断,数组或 map 遍历;参数赋值,函数或方法调用;自定义函数扩展,模板嵌套及重用等功能。基于该工具,可以轻松实现复杂场景的文本渲染。如Helm Template基于此实现了功能强大的 Kubernetes 配置文件渲染工作。

阅读更多