背景
目前只是简单的几个按业务不同,单独以域名的方式分割了两三个服务,每个服务三四台机器,都是 spring boot 单机版
需求
现在有两个服务可能有相互通信的必要,因为要更新应用内部的一些信息,所以需要按 IP 加端口的形式去通知。比如说后台更新了分组,需要通知到特征计算各个机器上去。目前就是简单的特征项目启动的时候上报自己的 IP+节点,然后后台挨个去通知。
但是为了响应统一号召,我们全面再切 k8s,所以就不像之前的物理机了,IP 都是固定,机器数量也可能变得动态,所以可能需要一个简单的服务注册中心。并且实时的判断特征服务的节点是否还活着
有没有简单版的注册中心
目前有个想法是直接用公司现有基于 etcd 的,我自己做个轻量级常驻的 watch 就行了
题外话
阿里的 nacos 不知道实际用起来轻量不轻量,但是福报厂的东西有些质量很一般,还有些没法自定义的东西,或者宣传吹的很牛逼,实际跑起来 250 。
1
Lonely 2021-07-07 14:04:39 +08:00 via iPhone
eureka 啊
|
3
damai0419 2021-07-07 14:41:14 +08:00
没啥其他要求的话,用中间件可不可以?比如 MQ ?
|
4
Dragonphy 2021-07-07 14:58:36 +08:00 1
一上线生产就疯狂占用资源,到现在还没解决,阿里的开源就是屎🐶
|
5
w292614191 2021-07-07 15:04:48 +08:00
为什么觉得自己写的会轻量呢?
|
6
wellsc 2021-07-07 15:05:49 +08:00
中间件为什么要被语言限制
|
7
0576coder OP |
8
0576coder OP |
9
0576coder OP @w292614191
不考虑真·高可用,我单机实现一个简易版的 我感觉会很轻量 |
10
wateryessence 2021-07-07 15:12:40 +08:00
Curator 复合你需求吗
|
11
heheda11 2021-07-07 15:39:24 +08:00
自己写难点就在于 CAP 分布式一致性问题,弄好这个其他的就是 CURD 了
|
12
coolcoffee 2021-07-07 15:49:54 +08:00
如果是在同一个集群,应该可以直接用自带 Headless Services 来实现吧。 我看携程的 apollo 在本来是 Eureka 作为服务发现,在 K8S 里面就用 K8S 自带的了。
K8S Headless Services 会自动维护可用 EndPoint 节点,配置好健康检查探针及时将不可用服务踢出去就好了。 |
13
Rwing 2021-07-07 15:51:50 +08:00
Consul ?
|
14
securityCoding 2021-07-07 15:56:51 +08:00
consul 或者 etcd 质量是绝对有保证的
|
15
wizzer 2021-07-07 16:01:42 +08:00
zk 啊 占用资源少
|
16
julyclyde 2021-07-07 16:18:50 +08:00
建议别选阿里的,过几天就没人管了
|
17
jorneyr 2021-07-07 16:35:43 +08:00
K8S 可以使用网络插件 Calico 固定 Pod IP 啊: annotations:
cni.projectcalico.org/ipAddrs: '["${podIp}"]' # For Calico |
18
jorneyr 2021-07-07 16:36:34 +08:00
实在不行,使用 Service 也可以,甚至 Statefulset 的域名也能在 Pod 内部访问目标机器。
|
19
sppan 2021-07-07 18:03:20 +08:00
hazelcast 可以看下是否满足你的需求,一个 jar 搞定。
|
20
Jooooooooo 2021-07-07 18:14:09 +08:00
自己搞个 zk 就行了
|
21
sjzjams 2021-07-07 18:38:06 +08:00
站在巨人的肩膀上 有时间的话可以再造轮子
|
22
misaka19000 2021-07-07 20:49:47 +08:00
zk 不行
|
23
misaka19000 2021-07-07 20:49:53 +08:00
?
|
24
zhenjiachen 2021-07-07 23:21:33 +08:00 via iPhone
上了 k8s 难道不能直接用 k8s 的 service 调用服务吗?
|
25
louchenabc 2021-07-07 23:28:46 +08:00
用了 k8s,就不需要服务注册中心了,spring cloud 项目中有 k8s 的 discovery 的 starter,直接使用就好了。
k8s 上面的 pod 信息本身就保存在 etcd 里,它的基础架构就支持了服务发现。 我这份 ppt 里面有提到这个,感兴趣的话可以看下。 https://github.com/lcomplete/TechShare/blob/master/docs/java/%E5%88%86%E5%B8%83%E5%BC%8F%E7%B3%BB%E7%BB%9F%E5%BC%80%E5%8F%91-%E5%BE%AE%E6%9C%8D%E5%8A%A1%E5%9F%BA%E7%A1%80%E8%AE%BE%E6%96%BD%E6%9E%B6%E6%9E%84.pptx |
26
xuanbg 2021-07-08 08:10:06 +08:00
Consul 不也挺好的?直接 docker 运行就行,没有任何代码维护的心智负担,还不够轻量级?
|
27
caixiaomao 2021-07-08 08:29:11 +08:00
etcd ? 用的人挺多的
|
28
kright 2021-07-08 10:56:32 +08:00
nacos 用起来倒是挺简单的,但是有两个问题
1,服务启动后 10s 左右,是没法调通的,还没注册好 2,如果你哪天发现磁盘空间慢了,记得去看下 nacos 的日志。。。 |
29
mosliu 2021-07-08 11:30:46 +08:00
eureka 也可以单机啊?
就是不是高可用就是了。。 不过 eureka 似乎确实也不算轻量 |
30
mmdsun 2021-07-08 12:37:57 +08:00 via Android
阿里 nacos BUG 很多,前段时间还爆出鉴权漏洞,传特定 header 就不用鉴权了。
推荐 eureka,sping 还在维护更新没有停更。 |
31
Lighfer 2021-07-08 13:52:17 +08:00
我们写了一个 redis 版的,然后用 java 按照 redis 的协议极其轻量级的服务器,用于本地做测试用
|
33
0576coder OP @louchenabc
感谢大佬 我研究下 |
35
0576coder OP |
36
xjlnjut730 2021-07-09 06:15:45 +08:00 1
我做技术选型,都是什么流行用什么,看看 github /gitee 上 top20 的 java 微服务框架流行啥用啥,大概率不会出大问题。
按这种思路就是无脑 nacos,不用纠结太多,不过我们实测下来的话,1.x 的版本是稳定可用的,2.x 的在容器环境下不太稳定,暂时不太建议用。 |