<kbd id="5sdj3"></kbd>
<th id="5sdj3"></th>

  • <dd id="5sdj3"><form id="5sdj3"></form></dd>
    <td id="5sdj3"><form id="5sdj3"><big id="5sdj3"></big></form></td><del id="5sdj3"></del>

  • <dd id="5sdj3"></dd>
    <dfn id="5sdj3"></dfn>
  • <th id="5sdj3"></th>
    <tfoot id="5sdj3"><menuitem id="5sdj3"></menuitem></tfoot>

  • <td id="5sdj3"><form id="5sdj3"><menu id="5sdj3"></menu></form></td>
  • <kbd id="5sdj3"><form id="5sdj3"></form></kbd>

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

    共 3110字,需瀏覽 7分鐘

     ·

    2021-04-24 01:14



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



    1. K8s 組件

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

    K8s 中主要通過 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)了它的伸縮性優(yōu)勢,需要訪問服務(wù)的節(jié)點(diǎn)越多,提供負(fù)載均衡能力的 kube-proxy 就越多,高可用節(jié)點(diǎn)也隨之增多。通過 K8s service 的 "ClusterIP" 來實(shí)現(xiàn)集群內(nèi)服務(wù)的 LB,當(dāng)然,如果集群外需要訪問 Service 對應(yīng)的所有具有相同功能的 pod 應(yīng)用程序,則可以通過 K8s service 的另外一種方式來實(shí)現(xiàn):"NodePort"。

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

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

    在 K8s 集群中,如果內(nèi)部訪問,可以簡單的通過 servicename 來進(jì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

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

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

    這里,K8s 通過虛擬出一個(gè)集群 IP,利用 kube-proxy 為 service 提供 cluster 內(nèi)的服務(wù)發(fā)現(xiàn)和負(fù)載均衡,上面說了 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ù)請求案例

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

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

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


    任何一個(gè) k8s 集群中的 pod 都可以通過 http 協(xié)議來訪問其它 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)限有的可以通過 namespace 來控制,有的可以通過服務(wù)本身的訪問權(quán)限來控制,但一切都可以進(jìn)行訪問,不存在語言的差別對待。

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

    手機(jī)掃一掃分享

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

    手機(jī)掃一掃分享

    分享
    舉報(bào)

    <kbd id="5sdj3"></kbd>
    <th id="5sdj3"></th>

  • <dd id="5sdj3"><form id="5sdj3"></form></dd>
    <td id="5sdj3"><form id="5sdj3"><big id="5sdj3"></big></form></td><del id="5sdj3"></del>

  • <dd id="5sdj3"></dd>
    <dfn id="5sdj3"></dfn>
  • <th id="5sdj3"></th>
    <tfoot id="5sdj3"><menuitem id="5sdj3"></menuitem></tfoot>

  • <td id="5sdj3"><form id="5sdj3"><menu id="5sdj3"></menu></form></td>
  • <kbd id="5sdj3"><form id="5sdj3"></form></kbd>
    黑人操B视频 | 国产免费黄色网址 | 天天日天天干2024 | 欧美靠逼免费网站 | 久久久久亚洲AV成人无码电影 |