千家信息网

Service之间如何通信

发表于:2025-02-05 作者:千家信息网编辑
千家信息网最后更新 2025年02月05日,Service之间如何通信,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。微服务架构的应用由若干 service 组成。比如有运行 htt
千家信息网最后更新 2025年02月05日Service之间如何通信

Service之间如何通信,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

微服务架构的应用由若干 service 组成。比如有运行 httpd 的 web 前端,有提供缓存的 memcached,有存放数据的 mysql,每一层都是 swarm 的一个 service,每个 service 运行了若干容器。在这样的架构中,service 之间是必然要通信的。

服务发现

一种实现方法是将所有 service 都 publish 出去,然后通过 routing mesh 访问。但明显的缺点是把 memcached 和 mysql 也暴露到外网,增加了安全隐患。

如果不 publish,那么 swarm 就要提供一种机制,能够:

  1. 让 service 通过简单的方法访问到其他 service。

  2. 当 service 副本的 IP 发生变化时,不会影响访问该 service 的其他 service。

  3. 当 service 的副本数发生变化时,不会影响访问该 service 的其他 service。

这其实就是服务发现(service discovery)。Docker Swarm 原生就提供了这项功能,通过服务发现,service 的使用者不需要知道 service 运行在哪里,IP 是多少,有多少个副本,就能与 service 通信。下面我们开始实践。

创建 overlay 网络

要使用服务发现,需要相互通信的 service 必须属于同一个 overlay 网络,所以我们先得创建一个新的 overlay 网络。

docker network create --driver overlay myapp_net

直接使用 ingress 行不行?

很遗憾,目前 ingress 没有提供服务发现,必须创建自己的 overlay 网络。

部署 service 到 overlay

部署一个 web 服务,并将其挂载到新创建的 overlay 网络。

docker service create --name my_web --replicas=3 --network myapp_net httpd


部署一个 util 服务用于测试,挂载到同一个 overlay 网络。

docker service create --name util --network myapp_net busybox sleep 10000000

sleep 10000000 的作用是保持 busybox 容器处于运行的状态,我们才能够进入到容器中访问 service my_web

验证

通过 docker service ps util 确认 util 所在的节点为 swarm-worker1。

登录到 swarm-worker1,在容器 util.1 中 ping 服务 my_web

可以看到 my_web 的 IP 为 10.0.0.2,这是哪个副本的 IP 呢?

其实哪个副本的 IP 都不是。10.0.0.2my_web service 的 VIP(Virtual IP),swarm 会将对 VIP 的访问负载均衡到每一个副本。

我们可以执行下面的命令查看每个副本的 IP。

docker exec util.1.bpon0vvbgve6lz3fp08sgana6 nslookup tasks.my_web

10.0.0.310.0.0.410.0.0.5 才是各个副本自己的 IP。不过对于服务的使用者(这里是 util.1),根本不需要知道 my_web副本的 IP,也不需要知道 my_web 的 VIP,只需直接用 service 的名字 my_web 就能访问服务。

看完上述内容,你们掌握Service之间如何通信的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!

服务 副本 网络 通信 容器 方法 运行 之间 使用者 内容 更多 架构 问题 变化 影响 不行 明显 均衡 遗憾 束手无策 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 终焉誓约推荐去那个服务器 gdc服务器日志下载 查询网页sql数据库数据 学生网络安全手抄报高难度 国美易卡服务器升级什么意思 阿里云服务器被劫持 宣传网络安全的小故事 如何在虚拟机上部署服务器 网络安全素质教育题库app 数据库数据的基本查询 全省考核人员数据库推荐人员 后端如何监控数据库更新 gojson生成数据库表 如何开展网络安全测试 陕西什么是少儿编程平台软件开发 真实日记软件开发 给你一百台服务器如何管理 redis 数据库连接 vb怎么连接sql数据库 小程序云开发数据库真实连接 方舟服务器的商店怎么开 华为服务器是不是全部出售了 数据库数据的基本查询 上海网络技术服务比较 常见的网络安全技术不包括 数据库性能 指标 计算机网络技术的二级学院 数据库语句可以小写不 新乡市雅佰仕网络技术公司 国家网络安全普及标语
0