微服务架构即将被淘汰

欢迎阅读 RJ 的文章,一个在码代码领域深耕却又不想深陷其中的编程哥。

传统的微服务即将过期,这并不是一个唬人的标题。3年前 Kubernetes 刚兴起的时候,我觉得这东西差不多 3 年能够普及,毕竟他是实打实的谷歌十多年容器编排的精华。而今天我想安利的是网格化服务 这东西。

服务架构的演进

微服务初期

产生了:springCloud,dubbo 等微服务框架,大部分的服务治理(熔断,限流,服务编排,服务链路跟踪)功能与框架甚至业务代码强依赖。

Kubernetes

kubernetes 是一个很杰出的软件产品,在一定程度上解决了微服务所需的应用编排,伸缩等问题,但是在流量治理,日志,监控,指标度量,等场景能力有限。

网格化服务

可以理解它是 kubernetes 中期的产物(也许你还没摸过 kubernetes 初期的产物他就即将逝去),网格化服务可以弥补 Kubernetes 的不足,提供更为丰富的服务治理方案。

回首我们曾在微服务那个青葱岁月犯过的傻!

项目开始

老板:说我们要跟上时代,要用微服务。

开发:没啥问题。服务开始拆分,引入 springCloud 或者 dubbo 等框架,完工。 (就是这么简单,没有谁比我更懂微服务了!)

上线运行

老板:微服务上了,我们现在是不是可以像大公司那样无停机发布了?

开发:我们只是拆分了服务,并没有做其它的,这块目前做不了。

开发:微服务太难搞了,日志,监控,异常排查,

服务部署,成本是之前的好几倍。

填坑之路

引入大量中间件,代码配合植入辅助功能,来实现日志采集,服务链路监控,智能网关,熔断。

多语言异构系统:中间件难以兼容,springCloud支持的大部分微服务功能都只适用 Java 而已。and so on (等等 太痛苦了)

初见 kubernetes ,曾以为它能拯救全世界。

Kubernetes 提供服务发现、配置管理、负载均衡和网关。 既然这样,那么是否就可以不再需要注册中心和服务治理框架,只基于Kubernetes构建微服务系统呢?

很多公司进行了这方面的尝试,尝试后发现从治理功能丰富度、大规模集群效率等方面,还是有不太满意的地方。

  • 流量治理能力不足——缺乏熔断能力,没有灰度控制能力;
  • 大规模使用时的性能问题——基于Kubernetes Service的服务发现过程需要经过Iptables或IPVS的查找过程,集群规模大时性能影响会比较明显。
  • 日志,链路监控,指标度量 等依旧需要额外的组件以及业务代码中需要加入辅助的代码。

目前较为成熟的方案: 使用Kubernetes部署+Spring Cloud(或Dubbo等),该方案在语言和框架依赖比较局限

豪门出身,不但有颜值还是个实力派(扎心了)

以 Istio 为代表的网格化服务横空出世,彻底战胜了传统微服务在服务数量多,多语言的,在安全性、网络流量控制、可观察性等方面的挑战。

  • 彻底把业务和服务治理逻辑切分开(没有语言和框架依赖)
  • 更灵活,更细粒度的流量管理
  • 监控,日志,链路跟踪提供编辑、统一的规范

官网定义的四大功能

偷偷告诉你:在服务网格化的江湖里,消费者和生产者直接不需要额外引入一个注册中心,服务直接部署通信。这在网格化服务里本是一个不值得一提的点,就是为了让没见过世面的你开开眼,免得其他太深奥没听明白失敬了。

没有繁琐的服务搭建/框架图,直接上部分案例:

案例的服务架构图

这个示例部署了一个用于演示多种 Istio 特性的应用,该应用由四个单独的微服务构成。 这个应用模仿在线书店的一个分类,显示一本书的信息。 页面上会显示一本书的描述,书籍的细节(ISBN、页数等),以及关于这本书的一些评论。

  • productpage. 这个微服务会调用 details 和 reviews 两个微服务,用来生成页面。
  • details. 这个微服务中包含了书籍的信息。
  • reviews. 这个微服务中包含了书籍相关的评论。它还会调用 ratings 微服务。(有3个版本)
  • ratings. 这个微服务中包含了由书籍评价组成的评级信息。

以下是浏览器效果图

案例1 流量A/B 测试

A/B 流量测试案例 1

A/B 流量测试2

同一系统,jackson 登陆的跟没有登陆的看到的界面效果是不同的。这一切的功劳都归于 Istio,而不用你的代码设置。(想想这么香的功能,自己是不是曾经反反复复在自己代码里面插入了很多埋点/配置)

案例2 服务链路跟踪

productpage 访问 detail,review,rating 的链路一目了然

这种链路跟踪不需要你代码或者框架额外植入代码

案例3 监控

虽然很常见,但是你没用过都不知道他有多便利多香

部署脚本演示

灵活的流量设置

轻轻松松实现故障植入的功能

安利到这里,具体感兴趣的话还是要靠你自己去尝试,关注 RJ不止于编程 ,后期有具体的环境搭建和安装(具体是文章还是视频再说咯)

(0)

相关推荐

  • 网站架构变迁

    Intro 从最早的 html 的学习到现在从单体应用迁移到微服务架构,所经历的网站架构也一直在变化,于是想写一篇关于网站架构变迁的文章. 单服务器 最早的我们的网站只有一台服务器,网站应用 + 数据 ...

  • Istio v1.9.0 发布

    Istio v1.9.0 已于近日发布.该版本是 Istio 在 2021 年发布的第一个版本,侧重于为在生产环境中运行 Istio 的用户改善操作体验.该版本的一些重点更新: VM 集成(Beta ...

  • 阿里云云效技术专家分享:云原生开发、调测及可靠发布解决方案

    在云原生环境中,基于Kubernetes的工具链一方面简化了开发者的许多日常琐碎,另一方面也带来了许多新的概念和工作方式的改变.本篇文章将聚焦于云原生基础设施,谈谈如何在面向云原生的开发流程中,高效地 ...

  • 云原生边缘计算:探索与展望

    本文首发于<物联网学报>2021年3月第5卷第1期,边缘计算社区经过物联网学报授权,发布本文. 本文是国家自然科学基金资助项目(No.61772480,No.61972171):之江实验室 ...

  • 云原生与微服务架构基础:02 | 云原生基础架构的组成以及云原生应用的特征

    云原生的基础架构 1. 微服务 2. 容器 3. 服务网格 5. 声明式 API 云原生应用的特征:云原生与"12 因素" 1. 方法论和核心思想 2. 编码.部署和运维原则 3. ...

  • 一文了解四种软件架构:Serverless架构、微服务架构、分布式架构、单体架构

    如果一个软件开发人员,不了解软件架构的演进,会制约技术的选型和开发人员的生存.晋升空间.这里我列举了目前主要的四种软件架构以及他们的优缺点,希望能够帮助软件开发人员拓展知识面. 一.单体架构 单体架构 ...

  • 微服务架构的前世今生

    传统行业向互联网行业的转型 背景 2012年以后,因为移动互联网的兴起,随着网名数量的增多,需求变化大,用户群体大.导致已有的应用程序无法抗住大规模的并发,且版本迭代麻烦,扩展不够灵活,应对外界环境能 ...

  • 微服务架构下的API接口驱动开发,设计和集成

    今天谈下在微服务架构下,接口设计和开发方面的思考. 对于微服务架构,SOA和Http Rest API接口设计,在我前面的头条文章中均有专门的说明,因此对于基础方面的解释在本文不再重复.对于今天要写的 ...

  • Laravel 如何设计微服务架构,及如何进行微服务间沟通? | Laravel China 社区

    如题,我目前有需要用 Laravel 设计微服务架构的需求,但能找到的相关资料不多 目前已有的一个思考方向是使用 K8S 统合各个独立的 Laravel 小服务,再开放统一对外的 API Gatewa ...

  • 微服务架构-从理想到现实

    注:本文为我最近阅读<微服务架构设计模式>的一点感悟,我不准备详细去写对该书的读书笔记记录,而是结合我们自己所做的一些微服务架构实践情况做一些总结和复盘. 从单体应用到微服务 任何一个新的 ...

  • 浅谈微服务架构的设计模式

    微服务架构模式(MicroserviceArchitectPattern).近两年在服务的疯狂增长与云计算技术的进步,让微服务架构受到重点关注 微型服务体系结构是一种体系结构模式,它主张把单个应用分成 ...

  • 【.net core】电商平台升级之微服务架构应用实战(core-grpc)

    一.前言 这篇文章本来是继续分享IdentityServer4 的相关文章,由于之前有博友问我关于微服务相关的问题,我就先跳过IdentityServer4的分享,进行微服务相关的技术学习和分享.微服 ...

  • SOA架构和微服务架构的区别是什么?

    作者:zpoison https://blog.csdn.net/zpoison/article/details/80729052 SOA架构和微服务架构的区别 首先SOA和微服务架构一个层面的东西, ...

  • .Net 微服务架构技术栈的那些事

    一.前言 大家一直都在谈论微服务架构,园子里面也有很多关于微服务的文章,前几天也有一些园子的朋友问我微服务架构的一些技术,我这里就整理了微服务架构的技术栈路线图,这里就分享出来和大家一起探讨学习,同时 ...