00:00 / 03:08
连播
清屏
智能
倍速
点赞182
00:00 / 00:37
连播
清屏
智能
倍速
点赞220
00:00 / 15:53
连播
清屏
智能
倍速
点赞1055
00:00 / 03:26
连播
清屏
智能
倍速
点赞102
有了kubernetes,为啥还需要istio 序员都知道Kubernetes功能很强大 那为什么还需要Istio呢? 因为Kubernetes再强大 也有它未解决的问题 问题是什么呢? 举个例子 你是一名程序员,进了一家大公司 业务发展得很好,用上了Kubernetes 你们公司开发了一个电商产品 包含了很多k8s服务 开发团队间使用不同的编程语言 随着产品的演进、迭代 为了使产品更加健壮 出现了越来越多的非功能性需求 如: 流量路由,协议转换,请求重试,负载均衡等 而这些需求是各个服务都需要的 你很容易想到 将各个非功能需求封装成lib包 以提高复用性 由于该产品有多种开发语言 所以这些lib包也需要使用其它语言都写一遍 而且这些lib包就算封装的很好 也难以避免与业务代码相耦合 因此这些lib包后续的迭代,维护,升级的成本很高 老板和程序员都很不开心 那有没有办法解决这些问题呢? 当然有! 没有什么问题是加一个中间层解决不了的 有的话那就再加一层 这次要加的中间层是Istio Istio是一个开源的Service Mesh实现 它站在了更高的level来处理这些非功能性需求 你猜的没错,那就是进程 既然在同一个进程内对编程语言有依赖 对业务代码有耦合 那就把这些非功能性需求放到一个单独的代理进程中去实现 原因是这些非功能性需求都发生在请求的处理过程中 与具体业务并不相关 业务进程使用通用协议把请求发给代理进程 代理进程经过处理后再把请求发给服务端 这样业务进程既可以使用任意编程语言 又无需实现这些非功能需求 为了提高灵活性,代理进程实现时需要暴露相关配置参数 这样该进程只要能读取到配置参数就能正常工作了 现在上述问题都迎刃而解 在Kubernetes环境中 业务进程运行在一个业务容器中 代理进程运行在一个代理容器中 由于该代理容器与业务容器在同一个network namespace中 所以容器间的进程可通过localhost进行通信 当商品服务向订单服务发起请求时 流量会被ip tables规则捕获,重定向到其代理容器 代理容器再将流量发送到订单服务 流量再次被重定向至订单服务的代理容器 代理容器最后再把流量发送至订单容器 这样再两个代理容器通信过程中就可以完成 流量路由,协议转换,请求重试,负载均衡等功能 #程序员 #每天学习一点点 #干货分享 #编程 #云原生
00:00 / 03:45
连播
清屏
智能
倍速
点赞1607
00:00 / 01:39
连播
清屏
智能
倍速
点赞7461
00:00 / 00:21
连播
清屏
智能
倍速
点赞NaN
00:00 / 05:00
连播
清屏
智能
倍速
点赞528