1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        云原生時代 PHP/Golang 項目如何實現(xiàn)微服務

        共 1606字,需瀏覽 4分鐘

         ·

        2022-06-01 18:01

        作者:韓天峰

        來源:SegmentFault  思否社區(qū) 


        前言



        在傳統(tǒng)架構下,我們需要使用服務發(fā)現(xiàn)、服務注冊等技術實現(xiàn)微服務架構。通常我們需要將服務提供方(Service Provider)的節(jié)點(IP:PORT)保存在 ZooKeeper、ETCD、Consul、Nacos 等服務管理組件,服務調用方(Service Customer)可以讀取到節(jié)點列表,發(fā)起 RPC 調用,建立連接并發(fā)送請求、接收響應。


        通常我們需要依賴特定框架的實現(xiàn),比如 Spring Cloud、Dubble、Hyperf 等框架。在云原生時代實現(xiàn)微服務不再需要這樣,我們可以直接使用 K8s 提供的 Service 來實現(xiàn)微服務架構,將服務注冊發(fā)現(xiàn)下沉到系統(tǒng)底層??煽啃愿?,穩(wěn)定性更好,而且是天然跨語言的,Java、PHP、Golang 都可以使用,開發(fā)框架也會變得更簡單,不需要做任何事情,只需要實現(xiàn)服務的邏輯,監(jiān)聽本機端口即可。


        K8s Service 介紹



        Service 是 K8s 提供的發(fā)現(xiàn)后端 Pod 的一種機制,為一組具有屬于同一個 Deployment 的所有 Pod 提供了統(tǒng)一的入口地址,將請求進行負載分發(fā)到各個 Pod 。



        在 K8s 中 Pod 就相當于是 Linux 系統(tǒng)的進程,是執(zhí)行應用程序的容器組。如何訪問 Pod 中的服務呢?直接去連接 Pod 的 IP:Port 肯定是不行的,因為它是不穩(wěn)定的,隨時可能會發(fā)生調度而重啟,Pod 的生命周期是非常短暫的。而 Pod 重啟之后 IP 端口會發(fā)生變化。一個服務或應用通常會有 1-N 個 Pod,請求 Service 的 IP:PORT 時會自動負載均衡并轉發(fā)到其中一個 Pod,Service 一般是使用 kube-proxy 和 Linux 內核提供的 IPVS 技術實現(xiàn)。也可以理解為 Service 其實就是一個4層代理,后端是應用的 Pod,在 Service 之前我們可以設置 Ingress 接入網關,允許從集群外部訪問,一般對外服務的 HTTP 接口就是這個方式。也可以直接使用,只允許內部訪問,這就是微服務模式。


        在 Code-Galaxy 平臺上使用 Service



        K8s 為每個Service分配了一個 Name,這個 Name 已經注冊到了 CoreDNS 中,可直接使用 gethostbyname 或其他 DNS 解析方法,將 Server Name 解析成 Service 的 IP 地址。一個 Service 需要設置對外端口,也就是訪問此 Service 對外暴露的端口,另外一個是內部端口,也就是 Pod 的端口。Pod 相關的信息會被保存在 K8s 的 ETCD 分布式存儲中。




        例如使用 Hyperf 框架,默認會監(jiān)聽 9501 端口,對外希望服務調用方直接通過 80 端口訪問,那 Service 的內:外分別就是 9501:80 。這時就在其他服務中就可以使用 HTTP 客戶端訪問 http://ServiceName:80/ 來請求此服務了。


        不同的命名空間互相訪問時,需要在Server Name之后追加.{$namespace}




        參考



        1. https://blog.csdn.net/huahua1999/article/details/124237065

        2. https://blog.51cto.com/u_15049785/4174726




        點擊左下角閱讀原文,到 SegmentFault 思否社區(qū) 和文章作者展開更多互動和交流,掃描下方”二維碼“或在“公眾號后臺回復“ 入群 ”即可加入我們的技術交流群,收獲更多的技術文章~

        - END -


        瀏覽 78
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            黄片操逼网站 | 黄色片免费看的 | 成人欧美一区二区三区无码电影 | 插插插男男网站入口 | 色色五月天婷婷 | 99性爱 | 国产乱婬AV片免费学生妹 | 国产精品 欧美精品 | 北条麻妃的69XX在线 | 欧美操逼免费视频 |