例如有 order,user,message 三个服务,每个服务部署 3 台节点,端口怎么定义呢?每个集群占一个区段,集群节点自增?
order:8080,8081,8082
user:9090,9091,9092
message:10000,10001,10002
1
l1nyanm1ng 2019-06-29 16:09:22 +08:00
注册到 eureka 上,通过 eureka-server 来控制负载均衡,通过 zuul gateway 来代理 url,这样就可以屏蔽到底用了多少集群,负载均衡全部由 eureka 来做,平时访问的只是 zuul gateway 放出的接口
|
2
lawsiki OP @l1nyanm1ng #1 感谢回复,我的意思是端口如何定义能够更加清晰,更好的管理,例如我现在的服务端口是 8080,该端口+100 就是对应的 debug 端口,通过这样一个规则就能快速找到相关的端口
|
3
lhx2008 2019-06-29 17:04:46 +08:00
最佳实践可能就是 K8S,或者简单一点的可以用 Docker Stack,一个服务只要指定一个端口就行。
|
4
opengps 2019-06-29 19:29:06 +08:00
实际业务应该仅仅是不同域名,端口都用 80/443 这种常规端口
|
5
opengps 2019-06-29 19:29:26 +08:00
负载均衡来实现不同机器对外使用相同地址
|
6
hst001 2019-06-29 20:52:44 +08:00
go micro 会使用随机端口,这种情况需要服务发现支持
|
7
jaskle 2019-06-30 06:58:56 +08:00 via Android
偷偷的告诉你:一切以排查问题最简单的方式来部署服务。运维自动化一时爽,一直自动化一直被研发打死。
|
8
helloworld000 2019-06-30 07:09:52 +08:00
同学,consistent hashing 了解一下
|
9
shm7 2019-06-30 10:33:13 +08:00 via iPhone
如果用 k8s 可以用 service ip 来区分,甚至有的服务商支持域名绑定,用端口区分,本身就不易区分。scale out 估计还要重新配环境吧
|
10
cabing 2019-06-30 11:02:39 +08:00
这个可以随意随意定义吧。指定一个规则,以后按照规则定义就行。
这种端口都是需要进行服务注册的,注册的时候刻意检测出哪些端口被使用。其实你在注册的时候也可以记录下哪些端口在使用。 不一定都是 http 协议。最好是把协议部分抽象下。加上薄薄的一层。 |
11
arrow8899 2019-06-30 11:38:01 +08:00
如果是传统的服务,可以定义一个区间,比如 40000-50000,每个服务取一个就行。
如果是用 k8s 做集群,可以都使用 80 端口,然后使用服务名称来访问。 |
12
hantsy 2019-06-30 21:58:46 +08:00
自己的单机上跑才关注端口,实际应用使用 Api Gateway+Service Discovery 自动分配端口。
|