linux
主页 > 服务器 > linux >

微服务之注册中心和配置中心Consul介绍

2023-09-09 | 佚名 | 点击:

注册中心

注册中心选型

你有没有思考过这样一个问题,为什么会有这么多的注册中心(etcd/ZooKeeper/Consul),选用那个最适合自己,是不是在选用的时候会眼花缭乱?

我在开始做的时候,自己也有很多困惑,将近3年的时候里我都在不停的学习,但是还是有很多不同的框架和产品,后来我明白了其中的原因,他们就像生活中的可乐、果汁、和牛奶一样,你在使用的时候选取你的编程语言(Java、Go、PHP),程序易接入的就好了。

产生注册中心五花八门的原因是因为语言很多,都想打造最适合自己的体系生态,我选择Consul为大家讲解,因为它安装和接入都比较方便。

不用被这些假象所困扰,多学习网络和系统的底层原理,万变不离其宗,技术人应该是给出解决方案。

CAP原理

Feature Consul ZooKeeper etcd
服务健康检查 服务状态、内存、硬盘 长链接、Keepalive 链接心跳
多数据中心 支持
K/V存储服务 支持 支持 支持
一致性 Raft Paxos Raft
CAP定理 CP CP CP
使用接口(多语言能力) Http/Dns 客户端 Http/Grpc
安全 acl/https acl Https支持

Consul介绍

使用PHP、和Go编写,使用Consul作为注册中心和配置中心比较方便,所以我选用的是Consul。

Consul 内部端口说明:

Consul Raft算法

Consul 集群的特点:

Consul 集群的角色:

算法的详情可以点击官网视频查看

Consul 基本使用

注册服务

1.注册服务是Consul最基础的服务,点击查看官网Api

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

PUT 192.168.88.144:8500/v1/agent/service/register

{

    "Name":"audio",

    "Id":"audio",

    "Tags":[

        "v2",

        "primary"

    ],

    "Address":"192.168.88.144",

    "Port":8500,

    "Check":{

        "HTTP":"http://192.168.88.144:8500",

        "Interval":"10s"

    }

}

1

2

3

4

5

6

7

8

9

10

11

{

  "id": "web",

  "name": "web",

  "port": 80,

  "check": {

    "name": "ping check",

    "args": ["ping", "-c1", "test.stark.com"],

    "interval": "30s",

    "status": "passing"

  }

}

2.发现服务

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

GET http://192.168.88.144:8500/v1/health/service/audio

[

    {

        "Node": {

            "ID": "38779dca-bffd-e399-6597-266aff68132c",

            "Node": "server01-virtual-machine",

            "Address": "127.0.0.1",

            "Datacenter": "dc1",

            "TaggedAddresses": {

                "lan": "127.0.0.1",

                "lan_ipv4": "127.0.0.1",

                "wan": "127.0.0.1",

                "wan_ipv4": "127.0.0.1"

            },

            "Meta": {

                "consul-network-segment": ""

            },

            "CreateIndex": 13,

            "ModifyIndex": 17

        },

        "Service": {

            "ID": "audio",

            "Service": "audio",

            "Tags": [

                "v2",

                "primary"

            ],

            "Address": "192.168.88.144",

            "TaggedAddresses": {

                "lan_ipv4": {

                    "Address": "192.168.88.144",

                    "Port": 8500

                },

                "wan_ipv4": {

                    "Address": "192.168.88.144",

                    "Port": 8500

                }

            },

            "Meta": null,

            "Port": 8500,

            // ...

}

]

Service API Service 相关的 API 都在 /v1/agent/service 下:

关于更多Consul的使用,查询官方文档吧。

原文链接:
相关文章
最新更新