当前位置:首页 > 教育

telepresence Telepresence:让微服务本地开发不再难

导读

云诞生的概念越来越受到人们的欢迎。作为典型的技术之一,微服务架构在过去被认为是一把双刃剑,在带来一定收益的同时,也对服务团队提出了很多技术要求。然而,随着开源技术的不断发展,越来越多优秀的技术和工具涌现出来,使得云不再难以本土落地。为此,博云研究院将不定期总结整理云诞生开发、测试、运营维护的最佳实践,借助博云和开源社区的共同力量,帮助客户开启更加规范简化的云诞生之路。

背景

基于Spring Boot框架开发微服务,并将其部署在Kubernetes集群中,是很多企业实施微服务的技术选择。在微服务架构下,开发人员主要关注由他们的服务团队维护的微服务。通常,这些微服务依赖于其他团队开发的微服务,也依赖于另一组微服务。

在微服务开发过程中,传统的做法是通过单元测试对代码进行验证,尽早发现问题,在相关服务开发基本完成后部署到Kubernetes集群进行联合调试。这样,一方面,开发人员花费大量的时间设计测试用例,编写测试代码,为每个依赖的服务进行堆砌;另一方面,由于集成时间较晚,集成测试过程中可能会爆发大量接口不一致导致的问题,造成人力物力的浪费。

如果尽早将服务部署到Kubernetes测试环境进行联合调试测试,可以提前发现问题。由于部署过程在开发过程中需要反复执行,很多企业都搭建了CICD工具,常见的流程是:提交代码->詹金斯拉源代码->马文编译-> Docker镜像构建->部署->测试。虽然这个过程可以自动完成,但是每次调试都需要经过这一步,耗时长,效率低。同时,Kubernetes集群中的微服务的特点是微服务可以在集群中相互访问,没有很好的方法获取集群内部和集群外部的功能,比如读取和写入数据库中的数据。因此,很难观察到服务的运行结果,不能像单个应用程序那样提供本地单步调试体验。

确认端口8080和5005在本地打开。

# netstat -na | grep -E "5005|8080"tcp6 0 0 ::1.5005 *.* LISTENtcp4 0 0 *.5005 *.* LISTENtcp6 0 0 ::1.8080 *.* LISTENtcp4 0 0 *.8080 *.* LISTEN

通过端口8080直接访问本地演示后端服务。

# curl localhost:8080Hello from demo-backend-c9df931b5c83411aad5a329ec9ecbcbb-5b4fdd7b-wzz9r

通过Kubernetes公开的节点端口访问应用程序,我们可以看到对演示后端的请求已经被转发到本地运行的docker。

# curl http://10.20.1.71:30001Message from backend is: Hello from demo-backend-80d454f85d8b43118f5740d9f25260ba-854fcd9fbd-lzkb7

5.通过IDE进行代码开发和单步调试

启动IDEA,在上面的源代码路径打开项目。

配置远程调试并连接本地5005端口。

设置断点,访问应用,可以在IDEA中进行单步调试。

修改代码并保存,然后单击“构建”->“构建项目”.

在演示后端项目的pom文件中,配置了devtools的依赖关系。

<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional></dependency></dependencies>

并且当IntelliJ IDEA重建后,这个目录下的文件demo-后端/目标/类都会更新。当应用程序由mvn spring-boot:run启动时,Devtools监控的类路径,也就是上面的目录,当目录中的文件发生变化时,将开始重启并执行新的代码。

. ____ _ __ _ _/ / ___'_ __ _ _(_)_ __ __ _ ( ( )___ | '_ | '_| | '_ / _` | / ___)| |_)| | | | | || (_| | ) ) ) )' |____| .__|_| |_|_| |___, | / / / /=========|_|==============|___/=/_/_/_/:: Spring Boot :: (v2.1.3.RELEASE)11:17:44.328 [restartedMain] INFO c.b.s.c.k.b.KubernetesBackendApplication - Starting KubernetesBackendApplication on Waret with PID 58351 (/Users/Waret87/WorkSpace/telepresence/spring-cloud-kubernetes/demo-backend/target/classes started by Waret87 in /Users/Waret87/WorkSpace/telepresence/spring-cloud-kubernetes/demo-backend)11:17:44.331 [restartedMain] INFO c.b.s.c.k.b.KubernetesBackendApplication - No active profile set, falling back to default profiles: default...11:17:45.931 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path ''11:17:45.934 [restartedMain] INFO c.b.s.c.k.b.KubernetesBackendApplication - Started KubernetesBackendApplication in 1.873 seconds (JVM running for 2.282)11:20:35.483 [Thread-6] INFO o.s.s.c.ThreadPoolTaskExecutor - Shutting down ExecutorService 'applicationTaskExecutor'. ____ _ __ _ _/ / ___'_ __ _ _(_)_ __ __ _ ( ( )___ | '_ | '_| | '_ / _` | / ___)| |_)| | | | | || (_| | ) ) ) )' |____| .__|_| |_|_| |___, | / / / /=========|_|==============|___/=/_/_/_/:: Spring Boot :: (v2.1.3.RELEASE)11:20:36.838 [restartedMain] INFO c.b.s.c.k.b.KubernetesBackendApplication - Starting KubernetesBackendApplication on Waret with PID 58351 (/Users/Waret87/WorkSpace/telepresence/spring-cloud-kubernetes/demo-backend/target/classes started by Waret87in /Users/Waret87/WorkSpace/telepresence/spring-cloud-kubernetes/demo-backend)11:20:36.838 [restartedMain] INFO c.b.s.c.k.b.KubernetesBackendApplication - No active profile set, falling back to default profiles: default...11:20:37.272 [restartedMain] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path ''11:20:37.272 [restartedMain] INFO c.b.s.c.k.b.KubernetesBackendApplication - Started KubernetesBackendApplicationin 0.467 seconds (JVM runningfor 173.62)

当您再次访问该服务时,您可以看到新代码已经生效。

# curl http://10.20.1.71:30001Message from backend is: Hello World from demo-backend-c9df931b5c83411aad5a329ec9ecbcbb-5b4fdd7b-wzz9r总结

通过以上实践可以看出,网真项目解决了开发、测试和部署之间的衔接问题,是对Kubernetes生态环境的很好补充。该项目已捐赠给CNCF基金会,社区文件比较齐全。有关更详细的原理和用法,请参考文档。

本文由博云研究院原创发表,转载请注明出处。

1.《telepresence Telepresence:让微服务本地开发不再难》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《telepresence Telepresence:让微服务本地开发不再难》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/jiaoyu/1290049.html

上一篇

暴走大侠法宝 《暴走大侠》法宝技能效果汇总详解

下一篇

车厘子怎么种植方法 车厘子的栽培技术

心理测试图 11张心理测试图,看看你内心是什么人!

  • 心理测试图 11张心理测试图,看看你内心是什么人!
  • 心理测试图 11张心理测试图,看看你内心是什么人!
  • 心理测试图 11张心理测试图,看看你内心是什么人!

心里测试图 11张心理测试图,看看你内心是什么人!

  • 心里测试图 11张心理测试图,看看你内心是什么人!
  • 心里测试图 11张心理测试图,看看你内心是什么人!
  • 心里测试图 11张心理测试图,看看你内心是什么人!

心理测试图片 11张心理测试图,看看你内心是什么人!

  • 心理测试图片 11张心理测试图,看看你内心是什么人!
  • 心理测试图片 11张心理测试图,看看你内心是什么人!
  • 心理测试图片 11张心理测试图,看看你内心是什么人!

魅族电池校正代码 魅族用户注意了!这些解读工程模式的技巧你必须知道,实在好用

  • 魅族电池校正代码 魅族用户注意了!这些解读工程模式的技巧你必须知道,实在好用
  • 魅族电池校正代码 魅族用户注意了!这些解读工程模式的技巧你必须知道,实在好用
  • 魅族电池校正代码 魅族用户注意了!这些解读工程模式的技巧你必须知道,实在好用

凯蒂·博曼:写黑洞照片关键代码女神遭骚扰

  • 凯蒂·博曼:写黑洞照片关键代码女神遭骚扰
  • 凯蒂·博曼:写黑洞照片关键代码女神遭骚扰
  • 凯蒂·博曼:写黑洞照片关键代码女神遭骚扰
小瓶子测试 速测! 风靡朋友圈的人格小瓶子来啦!

小瓶子测试 速测! 风靡朋友圈的人格小瓶子来啦!

人的一生有无数个瓶子,有的是满的。 有的是空,有的装了一半。 人气朋友圈的个性瓶子来了 #个性瓶子测验# / 回复“瓶子” 完成四个小问题,得到你自己的小瓶 /   生成海报后,您可以保存并共享它 / #笔芯#  温馨提醒: 该测试仅用于娱乐...

离婚测试题超准 测试|10道题暴露你的恋爱人格(超准!)

离婚测试题超准 测试|10道题暴露你的恋爱人格(超准!)

你有没有这样的感觉,单身的时候,谈恋爱的时候会变成另一个人,甚至会觉得奇怪,即使两个人的星座很近,但是一旦相处就会变得矛盾。正是因为除了我们自身的人格之外,还有一种埋藏在我们内心深处的人格叫做“爱情人格”,即在亲密关系中探索自我。 其实每个人都...