微服务Tars入门以及踩坑记录

微服务Tars入门以及踩坑记录

     什么是微服务

      近几年,微服务这个词闯入我们的视线范围。通常跟微服务相对的是单体应用,即将所有功能都打包成在一个独立单元的应用程序。微服务的架构就是将单个应用程序划分成各种小的、互相连接的微服务,一个微服务完成一个比较单一的功能,相互之间保持独立和解耦合。不同服务内部的开发技术可以不一致。

      当然,拆分成多个服务,关于服务的管理也引出了一系列问题。为了解决这些问题,提出了一系列概念:服务注册与发现、服务监控、服务治理等等。微服务的这些问题可以通过引入微服务框架来帮助我们去解决。

      目前业界比较成熟的微服务框架有阿里的Dubbo、Pivotal公司的Spring Cloud、腾讯的Tars、google的gRPC等等。

      我这里选择Tars作为入门学习的微服务框架。学习过程中,发现这跟我平时使用的PHP框架很不一样,除了要学习使用TarsPHP这一开发框架,微服务的环境部署和发布节点之外,还涉及到很多网络、服务器方面的知识。都是自己所欠缺需要恶补的。而且还需要考虑服务边界的划分服务与服务之间是如何调用的。

     发布节点时报错

      使用docker-compose进行部署,发布节点的时候遇到问题: 出现batchPatch err:NodeImp.cpp:patchPro:111| error:ip 172.25.0.1 is invalid错误

      

微服务Tars入门以及踩坑记录

      看似一个ip无效的报错,其实涉及到容器通信方面,必须先了解很多关于网络的知识,才能逐一排查错误原因。这里就所涉及到的知识进行一个梳理,然后再排查分析。

    docker 网络

     1.  docker network操作

     先查看下docker针对网络有哪些操作,使用命令:docker  network  --help

     

微服务Tars入门以及踩坑记录

    比如create命令:

    # 创建一个名为tars的桥接(bridge)虚拟网络,网关172.25.0.1,网段为172.25.0.0

    使用命令:docker network create -d bridge --subnet=172.25.0.0/16 --gateway=172.25.0.1 tars

    我们也可以使用命令查看创建网络的可选配置项:docker network create --help

    如下图:

 

微服务Tars入门以及踩坑记录

   2.  docker的网络模式

   安装 Docker 以后,会默认创建三种网络,可以通过 docker network ls 查看:

   

微服务Tars入门以及踩坑记录

   1)bridge(桥接模式)

   桥接模式是docker 的默认网络设置,当docker服务启动时,会在主机上创建一个名为docker0的虚拟以太网桥,并选择一个和宿主机不同的IP地址和子网分配给docker0网桥。

   示意图:

    

微服务Tars入门以及踩坑记录

    网络模式选择桥接模式的容器,就会连接上docker0这个网桥,再通过nat的转换,通过宿主机的网卡,连接外网,就能达到上外网的目的。

    默认情况下,守护进程会创建一对对等虚拟设备接口 veth pair,将其中一个接口设置为容器的 eth0 接口(容器的网卡),另一个接口放置在宿主机的命名空间中,以类似 vethxxx 这样的名字命名,从而将宿主机上的所有容器都连接到这个内部网络上。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zgfjyx.html