互联网飞速发展、全民现象级应用层出不穷,在亿级用户量级下还要不断满足用户请求,这就像给高速路上的汽车换引擎。微服务也正是在这种环境下应运而生。
画外音:微服务虽然火,但盲目跟风代价也比较大。
不少企业在进行微服务改造的过程中会遇到诸多问题,同行们也总是抱怨,改来改去,形式上像微服务,实际上连单体都不如。
微服务改造为啥容易走样?
其一、拆分不合理牵连出的同步远程调用过多。
这在微服务改造过程中是十分常见的现象,当然也确实是难点之一。我们需要对主流微服务开发框架熟悉,需要有构建一个技术能力平台,还需要对业务、系统设计的领域模型、用户行为等要素有足够的理解。
其二、没有分布式的保护机制,盲目实现。
有一个普遍现象就是前期微服务治理管控工作不到位,当然,我们都知道很多团队,人少但需求满天飞,开发人员很容易出现对远程调用不做足够的保护机制,特别是对微服务暴露的API接口的使用约束和标准规范等等。如果API接口访问和使用完全不受控制,那么后续多个微服务见自然导致紧耦合的问题。
画外音:改造过程有时候就像铺管道,不停地在马路上挖开、埋上、挖开、再埋上…
微服务可以说是现在考核架构师能力的必要项,比如遇到性能故障怎么解决?如何保证业务正常运行,不出现数据丢失,或者在微服务模块扩展的时候不出现业务中断等。
这些问题如果你想通过解决部署架构层面的冗余恐怕难以实现,因为这关系到整个微服务架构中的消息策略、事务管理机制、持久化机制等问题。
对此有两点想要在此明确:
首先,我们不能脱离开业务目标谈技术,这确实有点儿“耍流氓”;
其次,即使有了明确需求,也需要你前期进行相应的组织,包括团队的技术储备和积累,建立好相应的管控机制,否则很容易一片混乱。
画外音:传统的微服务架构改造一定是围绕业务和场景驱动的,而不是简单的技术驱动。
微服务被诟病最多的地方主要是单体拆分为微服务粒度太细,导致了大量微服务集成,接口滥用,给后续的管控和治理造成极大困难。引入微服务本身是为了自治和解耦,结果却大相径庭。这个不是微服务的锅,而是规划和架构设计不到位的锅。《百万年薪架构师必备能力—亿级企业高可用高并发高可靠微服务架构设计与实践》。