V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
0576coder
V2EX  ›  程序员

Java 有没有轻量级的服务注册中心,现在搜了一圈下来就看到阿里的有个 nacos,如果自己写的话 是不是更好

  •  
  •   0576coder · 151 天前 · 2680 次点击
    这是一个创建于 151 天前的主题,其中的信息可能已经有所发展或是发生改变。

    背景

    目前只是简单的几个按业务不同,单独以域名的方式分割了两三个服务,每个服务三四台机器,都是 spring boot 单机版

    需求

    现在有两个服务可能有相互通信的必要,因为要更新应用内部的一些信息,所以需要按 IP 加端口的形式去通知。比如说后台更新了分组,需要通知到特征计算各个机器上去。目前就是简单的特征项目启动的时候上报自己的 IP+节点,然后后台挨个去通知。

    但是为了响应统一号召,我们全面再切 k8s,所以就不像之前的物理机了,IP 都是固定,机器数量也可能变得动态,所以可能需要一个简单的服务注册中心。并且实时的判断特征服务的节点是否还活着

    有没有简单版的注册中心

    目前有个想法是直接用公司现有基于 etcd 的,我自己做个轻量级常驻的 watch 就行了

    题外话

    阿里的 nacos 不知道实际用起来轻量不轻量,但是福报厂的东西有些质量很一般,还有些没法自定义的东西,或者宣传吹的很牛逼,实际跑起来 250 。

    36 条回复    2021-07-09 06:15:45 +08:00
    Lonely
        1
    Lonely  
       151 天前 via iPhone
    eureka 啊
    0576coder
        2
    0576coder  
    OP
       151 天前
    @Lonely
    感觉 eureka 得至少 3 节点 单机的是不是不太好 0 -
    damai0419
        3
    damai0419  
       151 天前
    没啥其他要求的话,用中间件可不可以?比如 MQ ?
    Dragonphy
        4
    Dragonphy  
       151 天前   ❤️ 1
    一上线生产就疯狂占用资源,到现在还没解决,阿里的开源就是屎🐶
    w292614191
        5
    w292614191  
       151 天前
    为什么觉得自己写的会轻量呢?
    wellsc
        6
    wellsc  
       151 天前
    中间件为什么要被语言限制
    0576coder
        7
    0576coder  
    OP
       151 天前
    @Dragonphy

    哈哈哈 我之前用过他们的熔断限流的 sentinel 先不说占不占资源 这东西有两种 log 没法自定义格式 写死了的
    0576coder
        8
    0576coder  
    OP
       151 天前
    @wellsc
    但是这边是 java 要用 所以不管怎么样 client 服务注册的代码还是要用 java 写的
    所以就这样问了
    0576coder
        9
    0576coder  
    OP
       151 天前
    @w292614191
    不考虑真·高可用,我单机实现一个简易版的 我感觉会很轻量
    wateryessence
        10
    wateryessence  
       151 天前
    Curator 复合你需求吗
    heheda11
        11
    heheda11  
       151 天前
    自己写难点就在于 CAP 分布式一致性问题,弄好这个其他的就是 CURD 了
    coolcoffee
        12
    coolcoffee  
       151 天前
    如果是在同一个集群,应该可以直接用自带 Headless Services 来实现吧。 我看携程的 apollo 在本来是 Eureka 作为服务发现,在 K8S 里面就用 K8S 自带的了。

    K8S Headless Services 会自动维护可用 EndPoint 节点,配置好健康检查探针及时将不可用服务踢出去就好了。
    Rwing
        13
    Rwing  
       151 天前
    Consul ?
    securityCoding
        14
    securityCoding  
       151 天前
    consul 或者 etcd 质量是绝对有保证的
    wizzer
        15
    wizzer  
       151 天前
    zk 啊 占用资源少
    julyclyde
        16
    julyclyde  
       151 天前
    建议别选阿里的,过几天就没人管了
    jorneyr
        17
    jorneyr  
       151 天前
    K8S 可以使用网络插件 Calico 固定 Pod IP 啊: annotations:
    cni.projectcalico.org/ipAddrs: '["${podIp}"]' # For Calico
    jorneyr
        18
    jorneyr  
       151 天前
    实在不行,使用 Service 也可以,甚至 Statefulset 的域名也能在 Pod 内部访问目标机器。
    sppan
        19
    sppan  
       151 天前
    hazelcast 可以看下是否满足你的需求,一个 jar 搞定。
    Jooooooooo
        20
    Jooooooooo  
       151 天前
    自己搞个 zk 就行了
    sjzjams
        21
    sjzjams  
       151 天前
    站在巨人的肩膀上 有时间的话可以再造轮子
    misaka19000
        22
    misaka19000  
       151 天前
    zk 不行
    misaka19000
        23
    misaka19000  
       151 天前
    zhenjiachen
        24
    zhenjiachen  
       151 天前 via iPhone
    上了 k8s 难道不能直接用 k8s 的 service 调用服务吗?
    louchenabc
        25
    louchenabc  
       151 天前
    用了 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
    xuanbg
        26
    xuanbg  
       150 天前
    Consul 不也挺好的?直接 docker 运行就行,没有任何代码维护的心智负担,还不够轻量级?
    caixiaomao
        27
    caixiaomao  
       150 天前
    etcd ? 用的人挺多的
    kright
        28
    kright  
       150 天前
    nacos 用起来倒是挺简单的,但是有两个问题
    1,服务启动后 10s 左右,是没法调通的,还没注册好
    2,如果你哪天发现磁盘空间慢了,记得去看下 nacos 的日志。。。
    mosliu
        29
    mosliu  
       150 天前
    eureka 也可以单机啊?
    就是不是高可用就是了。。
    不过 eureka 似乎确实也不算轻量
    mmdsun
        30
    mmdsun  
       150 天前 via Android
    阿里 nacos BUG 很多,前段时间还爆出鉴权漏洞,传特定 header 就不用鉴权了。

    推荐 eureka,sping 还在维护更新没有停更。
    Lighfer
        31
    Lighfer  
       150 天前
    我们写了一个 redis 版的,然后用 java 按照 redis 的协议极其轻量级的服务器,用于本地做测试用
    Lighfer
        32
    Lighfer  
       150 天前
    @Lighfer 然后用 java 按照 redis 的协议写了一个极其轻量级的服务器
    0576coder
        33
    0576coder  
    OP
       150 天前
    @louchenabc
    感谢大佬 我研究下
    ciki
        34
    ciki  
       150 天前
    @0576coder 单机用啥微服务啊
    0576coder
        35
    0576coder  
    OP
       150 天前
    @ciki
    你可以看下我的背景
    更新应用内部的一些信息,所以需要按 IP 加端口的形式去通知。比如说后台更新了分组,需要通知到特征计算各个机器上去

    所以需要一个简易版的服务注册就行了
    xjlnjut730
        36
    xjlnjut730  
       149 天前   ❤️ 1
    我做技术选型,都是什么流行用什么,看看 github /gitee 上 top20 的 java 微服务框架流行啥用啥,大概率不会出大问题。
    按这种思路就是无脑 nacos,不用纠结太多,不过我们实测下来的话,1.x 的版本是稳定可用的,2.x 的在容器环境下不太稳定,暂时不太建议用。
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1345 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 17:19 · PVG 01:19 · LAX 09:19 · JFK 12:19
    ♥ Do have faith in what you're doing.