<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          云原生時(shí)代微服務(wù)的正確姿勢(shì)

          共 3110字,需瀏覽 7分鐘

           ·

          2021-04-24 01:14



          今天主要講講云原生時(shí)代,微服務(wù)的正確站姿!在Spring Cloud Kubernetes之實(shí)戰(zhàn)二服務(wù)注冊(cè)與發(fā)現(xiàn) 一文中,講過(guò)spring-cloud 如何結(jié)合 K8s 來(lái)實(shí)現(xiàn)服務(wù)的注冊(cè)與發(fā)現(xiàn)。但如果非 springcloud 框架,或者非 Java 語(yǔ)言呢?那該如何使用 K8s 來(lái)實(shí)現(xiàn)服務(wù)的注冊(cè)與發(fā)現(xiàn)呢?



          1. K8s 組件

          • configMap
          • kube-apiserver
          • scheduler
          • etcd
          • controller
          • kube-proxy

          K8s 中主要通過(guò) kube-proxy 負(fù)責(zé)為 Service 提供 cluster 內(nèi)部的服務(wù)發(fā)現(xiàn)和負(fù)載均衡,它是 K8s 集群內(nèi)部的負(fù)載均衡器,也是一個(gè)分布式代理服務(wù)器,在 K8s 的每個(gè)節(jié)點(diǎn)上都有一個(gè),這一設(shè)計(jì)體現(xiàn)了它的伸縮性?xún)?yōu)勢(shì),需要訪(fǎng)問(wèn)服務(wù)的節(jié)點(diǎn)越多,提供負(fù)載均衡能力的 kube-proxy 就越多,高可用節(jié)點(diǎn)也隨之增多。通過(guò) K8s service 的 "ClusterIP" 來(lái)實(shí)現(xiàn)集群內(nèi)服務(wù)的 LB,當(dāng)然,如果集群外需要訪(fǎng)問(wèn) Service 對(duì)應(yīng)的所有具有相同功能的 pod 應(yīng)用程序,則可以通過(guò) K8s service 的另外一種方式來(lái)實(shí)現(xiàn):"NodePort"。

          2. 基于 Service 實(shí)現(xiàn)微服務(wù)負(fù)載均衡

          在 Java 語(yǔ)言,或其它語(yǔ)言中,通常需要做很多繁重的組件來(lái)實(shí)現(xiàn)服務(wù)的 LB。例如:Dubbo、SpringCloud、甚至 SpringCloudAlibaba 等。當(dāng)然,對(duì)于 Python、Go 等語(yǔ)言,也有其 Restful API,所以也會(huì)集成標(biāo)準(zhǔn)的代理插件來(lái)進(jìn)行做傳統(tǒng)的 LB。但對(duì)于云原生時(shí)代的到來(lái),服務(wù)容器化讓微服務(wù)的訪(fǎng)問(wèn)更好了。K8s Service 提供的 LB,即為無(wú)語(yǔ)言邊際的負(fù)載均衡,不用考慮任何語(yǔ)言的阻礙,只要是通用的 Restful API,即可借助 service 來(lái)進(jìn)行處理集群內(nèi)部微服務(wù)之間的 LB。

          在 K8s 集群中,如果內(nèi)部訪(fǎng)問(wèn),可以簡(jiǎn)單的通過(guò) servicename 來(lái)進(jìn)行訪(fǎng)問(wèn)。例如:

          apiVersion: v1
          kind: Service
          metadata:
            name: web-server-service
            namespace: default
          spec:
            ports:
              - name: web-server
                port: 80
                targetPort: web-server-port
            selector:
              app: web-server

          通過(guò) selector 將 service 與服務(wù) pod 對(duì)應(yīng)起來(lái),創(chuàng)建一個(gè)微服務(wù)的 service,默認(rèn)其形式是:ClusterIP,則可以通過(guò)如下來(lái)訪(fǎng)問(wèn)該 service 對(duì)應(yīng)的后端 pod:

          curl http://$service_name.$namespace.svc.cluster.local:$service_port/api/v1/***

          這里,K8s 通過(guò)虛擬出一個(gè)集群 IP,利用 kube-proxy 為 service 提供 cluster 內(nèi)的服務(wù)發(fā)現(xiàn)和負(fù)載均衡,上面說(shuō)了 kube-proxy 的功能。

          Name:              web-server-service
          Namespace:         default
          Type:              ClusterIP
          IP:                20.16.249.134
          Port:              <unset>  80/TCP
          TargetPort:        80/TCP
          Endpoints:         20.162.35.223:80
          Session Affinity:  None
          Events:            <none>

          3. 高可用案例

          3.1 傳統(tǒng)微服務(wù)請(qǐng)求案例

          傳統(tǒng)的微服務(wù)中,不同語(yǔ)言構(gòu)建的微服務(wù)架構(gòu)很多,一般直接通過(guò) http 協(xié)議進(jìn)行訪(fǎng)問(wèn),在同一種語(yǔ)言中,又會(huì)出現(xiàn)一種集成框架模式來(lái)實(shí)現(xiàn)微服務(wù)架構(gòu)。如:Java 中 Dubbo、Springcloud 等,但其繁瑣的框架結(jié)構(gòu)導(dǎo)致了服務(wù)的繁重。

          3.2 跨語(yǔ)言間微服務(wù)的互通

          在 k8s 集群內(nèi),通過(guò) kube-proxy 結(jié)合 service 等一些功能組件來(lái)實(shí)現(xiàn)微服務(wù)之間的調(diào)用,不管是同語(yǔ)言也好,跨語(yǔ)言也罷。都會(huì)很好的進(jìn)行處理,包括實(shí)現(xiàn)高可用以及負(fù)載均衡、服務(wù)治理等。


          任何一個(gè) k8s 集群中的 pod 都可以通過(guò) http 協(xié)議來(lái)訪(fǎng)問(wèn)其它 pod 的服務(wù):

          root@rest-server-ver2-ds-vcfc7:/usr/src/app# curl http://web-server-service.kube-system.svc.cluster.local:80/api/v1/healthz
          {
            "status": {
              "code": 0,
              "msg""success"
            },
            "data""success"
          }root@rest-server-ver2-ds-vcfc7:/usr/src/app#


          其中的權(quán)限有的可以通過(guò) namespace 來(lái)控制,有的可以通過(guò)服務(wù)本身的訪(fǎng)問(wèn)權(quán)限來(lái)控制,但一切都可以進(jìn)行訪(fǎng)問(wèn),不存在語(yǔ)言的差別對(duì)待。

          瀏覽 55
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  内射福利在线观看 | 九色|PORNY|自拍视频 | 亚洲一级电影在线 | 亚洲一级操逼片 | 亚洲成人网站专区 |