当前位置:首页 > 科技  > 软件

Istio:微服务开发的终极利器,你还在为繁琐的通信和部署流程烦恼吗?

来源: 责编: 时间:2023-11-02 09:08:41 192观看
导读引言在前面的讲解中,我们已经提及了微服务的一些弊端,并介绍了Istio这样的解决方案。那么,对于我们开发人员来说,Istio究竟会带来哪些变革呢?今天我们就来简要探讨一下!Kubernetes简单介绍Kubernetes,俗称K8s,仅仅是因为L与s

引言

在前面的讲解中,我们已经提及了微服务的一些弊端,并介绍了Istio这样的解决方案。那么,对于我们开发人员来说,Istio究竟会带来哪些变革呢?今天我们就来简要探讨一下!sng28资讯网——每日最新资讯28at.com

Kubernetes简单介绍

Kubernetes,俗称K8s,仅仅是因为L与s之间有8个字母所以叫的K8s,是一种用于管理和编排Docker集群的工具。它被广泛使用且备受推崇,因此在讲解Istio技术时,我们选择与Kubernetes进行集成开发。接下来,我们将重点关注如何在集成了Istio的项目中进行代码编写和重构。尽管Kubernetes技术对于开发者来说关系不是特别密切,但我们会在以后的时间里专门设立一个Kubernetes系列专栏,来详细介绍该技术。sng28资讯网——每日最新资讯28at.com

bookinfo 架构介绍

bookinfo是Istio提供的学习样例,通过使用bookinfo,您可以更深入地理解Istio提供的路由、遥测等功能。下图展示了bookinfo在未集成Istio之前的物理架构:sng28资讯网——每日最新资讯28at.com

图片图片sng28资讯网——每日最新资讯28at.com

bookinfo是一个在线书店应用,由四个微服务组成,分别是Product page、Reviews、Details和Ratings。为了展示Istio的无侵入性,这四个微服务分别使用Python、Java、Ruby和Node进行开发。下面对每个服务进行详细说明:sng28资讯网——每日最新资讯28at.com

Product page:这是一个聚合服务,它通过聚合Reviews和Details的内容来展示产品页面。sng28资讯网——每日最新资讯28at.com

Details:这是图书详情服务,提供了书籍的详细信息。sng28资讯网——每日最新资讯28at.com

Reviews:这是图书评价服务,它有多个版本供选择。Reviews还是一个聚合服务,它将Ratings的评分信息与评价内容进行聚合。sng28资讯网——每日最新资讯28at.com

Ratings:这是图书预订排名服务,提供了图书的评分信息。sng28资讯网——每日最新资讯28at.com

下图展示了bookinfo在嵌入了Istio后的物理架构:sng28资讯网——每日最新资讯28at.com

图片图片sng28资讯网——每日最新资讯28at.com

部署 bookinfo 应用

为了简化bookinfo应用的部署过程,可以使用批注入的方式来自动注入sidecar。这样可以避免每次手动注入sidecar的繁琐步骤。sng28资讯网——每日最新资讯28at.com

配置 istio 自动注入

批注入是一种将sidecar自动注入到Kubernetes部署中的方法。通过批注入,可以在应用部署的同时自动添加sidecar容器,而无需手动进行注入操作。sng28资讯网——每日最新资讯28at.com

在部署bookinfo应用之前,需要确保已经安装和配置了Istio。然后,可以按照以下步骤进行批注入部署bookinfo应用:sng28资讯网——每日最新资讯28at.com

kubectl create ns testkubectl label ns test istio-injectinotallow=enabledkubectl get ns test --show-labels

部署 bookinfo 应用

kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml -n test

这里就不再赘述了,你可以在官方网站上详细了解:https://istio.io/latest/zh/docs/examples/bookinfo/sng28资讯网——每日最新资讯28at.com

当你部署完bookinfo 之后,打开浏览器并访问网址,多次刷新页面,你会发现 bookinfo 应用使用了多个不同版本的 reviews,如下所示:sng28资讯网——每日最新资讯28at.com

Review-v1

图片图片sng28资讯网——每日最新资讯28at.com

Review-v2

图片图片sng28资讯网——每日最新资讯28at.com

Review-v3

图片图片sng28资讯网——每日最新资讯28at.com

bookinfo 服务调用示意图

图片图片sng28资讯网——每日最新资讯28at.com

代码开发

这里我们将不再配置关于Istio的虚拟服务和路由规则。这些都可以通过编写一个YAML格式的文件,并在Kubernetes中执行一条命令来完成。你可以参考官方提供的示例来进行配置。配置完成后,Istio将能够捕获所有当前服务发送的请求,并进行解析路由,从而实现灰度发布、A/B测试、故障注入等逻辑。但是这不是我们文章的重点,我们只需要关注代码的编写即可。剩下的运维工作将由相关人员负责sng28资讯网——每日最新资讯28at.com

在开发之前,让我们先来看一下官方GitHub上的bookinfo项目是如何进行调用的。官方仓库的地址是:https://github.com/istio/istio/blob/master/samples/bookinfo/src/reviews/reviews-application/src/main/java/application/rest/LibertyRestEndpoint.javasng28资讯网——每日最新资讯28at.com

我已经将地址定位到了我们关注的Java文件。如果你是Python开发或者使用Node.js,你可以自行切换到相应的目录。无论使用哪种语言,基本的逻辑都是相同的。sng28资讯网——每日最新资讯28at.com

private final static Boolean ratings_enabled = Boolean.valueOf(System.getenv("ENABLE_RATINGS"));private final static String star_color = System.getenv("STAR_COLOR") == null ? "black" : System.getenv("STAR_COLOR");private final static String services_domain = System.getenv("SERVICES_DOMAIN") == null ? "" : ("." + System.getenv("SERVICES_DOMAIN"));private final static String ratings_hostname = System.getenv("RATINGS_HOSTNAME") == null ? "ratings" : System.getenv("RATINGS_HOSTNAME");private final static String ratings_port = System.getenv("RATINGS_SERVICE_PORT") == null ? "9080" : System.getenv("RATINGS_SERVICE_PORT");private final static String ratings_service = String.format("http://%s%s:%s/ratings", ratings_hostname, services_domain, ratings_port);private final static String pod_hostname = System.getenv("HOSTNAME");private final static String clustername = System.getenv("CLUSTER_NAME");//·······此处省略没必要的代码//调用逻辑private JsonObject getRatings(String productId, HttpHeaders requestHeaders) {  ClientBuilder cb = ClientBuilder.newBuilder();  Integer timeout = star_color.equals("black") ? 10000 : 2500;  cb.property("com.ibm.ws.jaxrs.client.connection.timeout", timeout);  cb.property("com.ibm.ws.jaxrs.client.receive.timeout", timeout);  Client client = cb.build();  WebTarget ratingsTarget = client.target(ratings_service + "/" + productId);  Invocation.Builder builder = ratingsTarget.request(MediaType.APPLICATION_JSON);  //·······此处省略没必要的代码

通过以上的代码,我们可以发现,使用Istio可以大大简化微服务架构中的代码逻辑。通过使用服务名进行HTTP调用,Istio会自动处理请求的路由、负载均衡和流量控制等功能,从而减少了对其他组件的依赖,使代码更加清爽。在实际开发中,可以选择使用OpenFeign或gRPC等技术来实现微服务之间的通信。sng28资讯网——每日最新资讯28at.com

OpenFeign是一个基于注解的声明式Web Service客户端,它可以简化HTTP请求的编写和调用。使用OpenFeign,你可以定义一个接口,并使用注解来描述接口的请求路径、请求方法和参数等信息。OpenFeign会根据这些注解自动生成HTTP请求的代码,使开发者可以更加方便地调用其他微服务。sng28资讯网——每日最新资讯28at.com

gRPC是一个高性能、开源的远程过程调用(RPC)框架,它使用Protocol Buffers作为接口定义语言(IDL)来定义服务接口和消息格式。通过gRPC,你可以定义一个接口,并使用Protocol Buffers来描述接口的请求和响应消息。gRPC会自动生成客户端和服务端的代码,使开发者可以直接调用远程服务而无需关心底层的网络通信细节。sng28资讯网——每日最新资讯28at.com

无论是选择OpenFeign还是gRPC,都可以根据具体的需求和技术栈来决定。它们都提供了方便的工具和框架来简化微服务之间的通信,使开发者可以更加专注于业务逻辑的实现。sng28资讯网——每日最新资讯28at.com

总结

总的来说,Istio为开发人员带来了许多变革。首先,它提供了批注入的方式来自动注入sidecar,简化了应用部署的过程。其次,通过Istio,开发人员可以轻松地进行灰度发布、A/B测试和故障注入等操作,而无需手动配置路由规则。此外,Istio还提供了服务发现、负载均衡和流量控制等功能,减少了对其他组件的依赖,使代码更加清爽。在代码开发方面,可以选择使用OpenFeign或gRPC等技术来简化微服务之间的通信。总之,Istio的引入为微服务架构的开发人员提供了更便捷和高效的开发方式。sng28资讯网——每日最新资讯28at.com

本文链接://www.dmpip.com//www.dmpip.com/showinfo-26-16505-0.htmlIstio:微服务开发的终极利器,你还在为繁琐的通信和部署流程烦恼吗?

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 闭包解密:从小白到高手,掌握Python中的闭包技巧

下一篇: Go etcd 的依赖问题终于解决了......

标签:
  • 热门焦点
  • 5月iOS设备好评榜:iPhone 14仅排第43?

    5月iOS设备好评榜:iPhone 14仅排第43?

    来到新的一月,安兔兔的各个榜单又重新汇总了数据,像安卓阵营的榜单都有着比较大的变动,不过iOS由于设备的更新换代并没有那么快,所以相对来说变化并不大,特别是iOS好评榜,老款设
  • 在线图片编辑器,支持PSD解析、AI抠图等

    在线图片编辑器,支持PSD解析、AI抠图等

    自从我上次分享一个人开发仿造稿定设计的图片编辑器到现在,不知不觉已过去一年时间了,期间我经历了裁员失业、面试找工作碰壁,寒冬下一直没有很好地履行计划.....这些就放在日
  • 深度探索 Elasticsearch 8.X:function_score 参数解读与实战案例分析

    深度探索 Elasticsearch 8.X:function_score 参数解读与实战案例分析

    在 Elasticsearch 中,function_score 可以让我们在查询的同时对搜索结果进行自定义评分。function_score 提供了一系列的参数和函数让我们可以根据需求灵活地进行设置。近期
  • .NET 程序的 GDI 句柄泄露的再反思

    .NET 程序的 GDI 句柄泄露的再反思

    一、背景1. 讲故事上个月我写过一篇 如何洞察 C# 程序的 GDI 句柄泄露 文章,当时用的是 GDIView + WinDbg 把问题搞定,前者用来定位泄露资源,后者用来定位泄露代码,后面有朋友反
  • 破圈是B站头上的紧箍咒

    破圈是B站头上的紧箍咒

    来源 | 光子星球撰文 | 吴坤谚编辑 | 吴先之每年的暑期档都少不了瞄准追剧女孩们的古偶剧集,2021年有优酷的《山河令》,2022年有爱奇艺的《苍兰诀》,今年却轮到小破站抓住了追
  • 最“俊美”淘宝卖家,靠直播和短视频圈粉,上架秒光,年销3000万

    最“俊美”淘宝卖家,靠直播和短视频圈粉,上架秒光,年销3000万

    来源 | 电商在线文|易琬玉编辑|斯问受访店铺:Ringdoll戒之人形图源:微博@御座的黄山、“Ringdoll戒之人形”淘宝店铺有关外貌的评价,黄山已经听累了。生于1985年的他,哪
  • 梁柱接棒两年,腾讯音乐闯出新路子

    梁柱接棒两年,腾讯音乐闯出新路子

    文丨田静 出品丨牛刀财经(niudaocaijing)7月5日,企鹅FM发布官方公告称由于业务调整,将于9月6日正式停止运营,这意味着腾讯音乐长音频业务走向消亡。腾讯在长音频领域还在摸索。为
  • 大厂卷向扁平化

    大厂卷向扁平化

    来源:新熵作者丨南枝 编辑丨月见大厂职级不香了。俗话说,兵无常势,水无常形,互联网企业调整职级体系并不稀奇。7月13日,淘宝天猫集团启动了近年来最大的人力制度改革,目前已形成一
  • ESG的面子与里子

    ESG的面子与里子

    来源 | 光子星球撰文 | 吴坤谚编辑 | 吴先之三伏大幕拉起,各地高温预警不绝,但处于厄尔尼诺大“烤”之下的除了众生,还有各大企业发布的ESG报告。ESG是“环境保
Top
Baidu
map