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

[讨论] 大家来聊聊,不实用 Java 实现的微服务

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

    但凡你在 Google 上一搜索微服务,你就会发现全都是使用 Spring 全家桶来实现的。

    微服务架构本来应该是语言无关的,但是被这群使用 Java 的人搞得就像是专门为 Java 定制的一样。

    欢迎各位在这里讨论一下,在你们的项目中,有项目使用了微服务架构,但是没有任何一个地方使用 Java 技术栈吗?具体是怎么做的?用的是什么语言?

    第 1 条附言  ·  104 天前

    请大家不要引战。

    专注于讨论在不实用Java的情况下,实现全套微服务。

    98 回复  |  直到 2019-08-10 22:35:20 +08:00
        1
    arrow8899   104 天前   ♥ 20
    什么叫“被这群使用 Java 的人搞得就像是专门为 Java 定制的一样”??
    用 Java 的人多自然框架使用的人就多啊,SpringCloud 开源微服务的框架,是为了让写代码更方便,效率更高。如果你不用 Java,你可以用你的语言写一个微服务框架出来。
        2
    hyl24   104 天前
    什么叫“被这群使用 Java 的人搞得就像是专门为 Java 定制的一样”??
    用 Java 的人多自然框架使用的人就多啊,SpringCloud 开源微服务的框架,是为了让写代码更方便,效率更高。如果你不用 Java,你可以用你的语言写一个微服务框架出来。
        3
    liuxey   104 天前   ♥ 8
    我觉得不需要讨论,楼主的结论就是 "Java 这群人真讨厌"
        4
    leonme   104 天前 via Android
    思想都是一样的,将业务功能模块化呗,再加上注册中心,网关转发,熔断降级,全链路追踪,就这些东西,剩下的就和单体应用一样
        5
    acrisliu   104 天前 via Android
    怪这群搞 Java 的人???
        6
    wizzer   104 天前
    github.com/Wizzercn/NutzWk
    非 spring 系列的 java 开源微服务~~
        7
    weo0   104 天前
    别贴标签,很恶心。
        8
    Kilerd   104 天前
    来,WIP 勉强能用的 Rust 微服务 https://github.com/tower-rs/tower
        9
    likaka   104 天前   ♥ 1
    柠檬精
        10
    ZiLong   104 天前
    @Kilerd 借问,tower 是 tide 的一部分?还是独立的?
        11
    dovme   104 天前
    谁让 java 人多呢,要是 php 人多,谷歌搜出来的肯定是 php 啊,那你会不会又发帖子问“微服务架构本来应该是语言无关的,但是被这群使用 php 的人搞得就像是专门为 php 定制的一样。”
        12
    xsir2020   104 天前
    嗯,站在标准的角度,熟悉 REST 设计指南,无疑就让 api 设计成功了一半。
    https://www.hn-tech.net/tags/Microsoft-REST-API 指南中文翻译 /
        13
    limuyan44   104 天前
    微服务架构本来应该是语言无关的,但是被你们这些认为[[这群使用 Java 的人搞得就像是专门为 Java 定制的一样]]搞得就像是专门为 Java 定制的一样。
        14
    Kilerd   104 天前
    @ZiLong #10 独立的,tower 自己实现了 application 部分, 底层逻辑交给了 hyper 来处理 http 周期, 用了 http_parse_hyper 来做了两部分的连接
        15
    wineway   104 天前 via iPhone
    springcloud 这东西就是邪路
        16
    abdiweli   104 天前
    你这样说我们写 Java 的很伤心啊!
        17
    strry   104 天前   ♥ 1
    告诉 LZ 一个秘密, 汇编 ,C, 一样可以实现微服务 就看你想不想写了(滑稽
        18
    wysnylc   104 天前
    ????????自己菜不会写 SOA,别人写了还要被你说?脑回路清奇
        19
    chocotan   104 天前
    某外国写书的大佬介绍微服务就是以 netflix 那一套举例的
        20
    itskingname   104 天前
    正经讨论不引战。

    如果不用 Java,你是怎么 实现 注册中心,网关转发,熔断降级,全链路追踪。
        21
    ResidualWind   104 天前
    楼主是故意的吧!
        22
    itskingname   104 天前
    @chocotan 这本书我有。
        23
    janxin   104 天前
    你只是讨厌 Java ?

    我搜索了一下第一页基本都是介绍概念的啊
        24
    itskingname   104 天前
    @ResidualWind 不是。我只想认真讨论不使用 Java 技术栈的情况下如何实现全套微服务。
        25
    Raymon111111   104 天前
    所以搞 java 的人阻止你用别的语言了?
        26
    th00000   104 天前
    服务治理是一种思想 你用汇编都能做
        27
    notreami   104 天前
    楼主的结论就是 "Java 真讨厌"
        28
    ghos   104 天前
    golang 不也有很多吗 一搜一大把
        29
    itskingname   104 天前
    @th00000 但是,如果很多很多人都用 Java 来做的话,情况就坏了,这种思想就会逐渐被这种语言绑定。

    语言决定思维方式。
        30
    zhazi   104 天前
    @wineway 如何得到这个结论的
        31
    zhazi   104 天前
    @wineway 你是如何得出这个结论的
        32
    chanchan   104 天前
    翻译一下,我谷歌搜不到用别的语言实现微服务.都怪这群搞 java 的
        33
    lihongjie0209   104 天前
    [讨论] 大家来聊聊,不实用 Java 实现的设计模式
        34
    littleghosty   104 天前 via iPhone
    使用 java 是我的错咯?
        35
    th00000   104 天前
    @itskingname 语言怎么会绑定你的思想 思想是思想 语言是工具
    另外你说的全都是 Spring 全家桶来实现的 不敢苟同
    即使是用 Java 可选的工具也是一堆一堆的
    中间件都是所有语言共用的 跟 Java 没有必然关系
    你会有这种疑问 完全是因为你没有深入下去 没有真正搞懂什么叫 **微服务!**
        36
    snappyone   104 天前
    用 k8s 啊
        37
    Sendya   104 天前
    用 Go 做了套 微服务概念的 程序 算不算?
    当然我这种 CRUD boy 是根本不可能做到开发微服务的基础组件(注册中心,熔断,等) 当然是用现成的。

    另外,我是作 Java 开发的。楼主这提问方式有点骚

    ![image.png]( https://i.loli.net/2019/08/09/sH1k5rlzWULfgbF.png)
        38
    helloworldgo   104 天前 via iPhone
    看帖子是真想骂人
        39
    gramyang   104 天前
    用 gomicro 啊,到现在为止没有发现 go 不如 java 的地方,几乎所有的写法都比 java 更简洁
        40
    silverfox   104 天前   ♥ 6
    我这边做的是微服务架构,大部分业务服务是基于 ASP.Net Core 开发,还有一部分使用的是 Apache CXF 实现 SOAP 服务(因为目前 .Net Core 没有 WCF Services Host 成熟实现),一部分服务使用 Node.js 实现。

    我不太理解为什么要规避 Java 技术栈,根据不同的业务场景和当前开发资源的情况,选择合适的编程语言是微服务的一大优势。

    另外 Java 与 Spring Cloud 并不等价,至于如何实现微服务的功能取决于你的基础设施。比如是基于 Kubernetes 的,那么服务发现可以使用 Kubernetes Service,网关可以用 Ingress Controller,熔断模式根据不同的编程语言可以使用不同的类库(比如 Polly ),调用链追踪继续使用 Jaeger。

    只是这些技术可能不是开箱即可用的,需要花费时间与资源构造与磨合。如何进行技术选型取决于当时的情景,不能一概而论。
        41
    joooooker21   104 天前
    写 java 的听了内心毫无波澜,甚至还有点想笑
        42
    carpe   104 天前
    什么叫“被这群使用 Java 的人搞得就像是专门为 Java 定制的一样”??
    用 Java 的人多自然框架使用的人就多啊,SpringCloud 开源微服务的框架,是为了让写代码更方便,效率更高。如果你不用 Java,你可以用你的语言写一个微服务框架出来。
        43
    binjoo   104 天前
    但凡你在 Google 上一搜索微服务,你就会发现全都是使用 Spring 全家桶来实现的。

    欢迎各位在这里讨论一下,在你们的项目中,有项目使用了微服务架构,但是没有任何一个地方使用 Java 技术栈吗?具体是怎么做的?用的是什么语言?

    ---------

    不会说话,怪谁呢。
        44
    arry   104 天前   ♥ 2
    自己引战还叫人别引战,哈哈哈哈
        45
    leishi1313   104 天前   ♥ 4
    你可能只是想吐槽到处都是一提微服务就是 spring boot,但我觉得可能只是老是用中文搜索得到的偏见,我前段日子对微服务很感兴趣,搜了很多文章,基本英文搜索结果你不特意提,没人把微服务跟 spring boot 联系在一起。相反微服务的优势就是可以用不同的 stack 来实现一个系统的不同部分,这方面可以去看看 github.com/GoogleCloudPlatform/microservices-demo,用了 5 种语言用微服务实现了一个不小不大的系统,只有一个服务是 java 写的,而且也没用 spring boot,这其实才是微服务的典型应用
        46
    lxfxf   104 天前
    那就用 Scala,手动狗头
        47
    sniperPythoner   104 天前
    就我知道的来说,只有 JAVA 有比较成熟的微服务框架。接受现实吧,现在互联网收紧,各个公司都趋于保守,而 JAVA 能满足他们的需求
        48
    chenqh   104 天前
    总比一説微服务就説 golang 适合做微服务好吧
        49
    MotherShip   104 天前
    不服你自己动手造轮子啊,no bb show code
        50
    wccc   104 天前
    会说话就多说点..
    某某语言 微服务技术栈有哪些?
        51
    ZiLong   104 天前
    @Kilerd 可以的,3ks
        52
    passerbytiny   104 天前   ♥ 1
    但凡你去咨询一下哪里足球踢得好,你就会发现世界冠军全是欧美(欧洲+南美)的。

    足球本来是全世界的(中国人发明的),但是被这群欧美人搞得搞得就像是专门为欧美定制的一样。

    欢迎各位在这里讨论一下,在你们的项目中,有足球世界冠军不是欧美人的吗?具体是怎么做到的?

    请大家不要引战。

    专注于讨论中国足球怎么成为世界冠军。
        53
    ZiLong   104 天前
    Java 也不全是 Spring 系,虽然 Spring 是主流,例如 https://quarkus.io/至少带来了一股清风的感觉
        54
    itskingname   104 天前
    @gramyang
    @silverfox
    @leishi1313

    感谢三位,你们才是真正来讨论问题的。
        55
    oneisall8955   104 天前 via Android
    微服务只是一种思想,实现起来,由于 JAVA 基数多,springcloud 体系也相对成熟点,所以搜索出来也相对多,但得出搞得 XXX 一样结论是由于你对搜索结果的不满
        56
    passerbytiny   104 天前
    test
        57
    passerbytiny   104 天前
    @leishi1313

    https://sm.ms/image/6vw9keNpuSqfbDK

    我是找不出来还有哪个字需要 720 天了。
        58
    agagega   104 天前 via iPhone
    你换成英文搜索下
        59
    passerbytiny   104 天前
    @passerbytiny #50 鉴于楼主的后续回复,我觉得这个比喻已经不够了。来一个更直接的。
    Mr luobo:欧洲和南美的足球是垃圾!
    Mr luobo:请大家专注于讨论一下中国对怎么拿下世界杯冠军。
    ……………………一段时间后…………………………
    ……………………已经有好几十个人发言了…………………………
    Mr luobo:感谢刚才那三位,只有你们才是真正来讨论问题的。

    请不要坑这三位人。
        60
    lynskylate   104 天前 via Android
    @itskingname ?这和语言到底有啥关系,注册中心现在主流的 consul 是 java 写的?全链路追踪 opentracing 了解一下,网关转发有几个用 java 的?相比 spring 全家桶,这些自己需要做一些改造罢了。
        61
    stanjia   104 天前
    以前我以为  netflix  是个电视台, 后来才知道  netflix  是个 iT 公司。。。
        62
    happyz90   104 天前 via Android
    Tars 框架,支持 C++/NodeJS/Java/Go/PHP
        63
    vance   104 天前
    了解下 go micro? consul?等
        64
    cabing   104 天前
    网关,服务注册和发现,配置中心,链路跟踪。

    我们使用 java 就没有用 spring-boot 全家桶。部分自研,部分重复轮子。
        65
    cabing   104 天前   ♥ 1
    网关,服务注册和发现,配置中心,链路跟踪。

    用些开源组件,中间做一层,很容易任意切换。比如服务注册和发现可以用 consul 和 etcd。
        66
    Meridian   104 天前
    了解一下 Linkerd 和 Istio
    再搜一搜 servicemesh
    “但是被这群使用 Java 的人搞得就像是专门为 Java 定制的一样” 你无知的样子真令人讨厌
        67
    LeeSeoung   104 天前
    k8s docker istio servicemesh 这些跟 java 有关么?我主写 java 但是我知道微服务不会被语音束缚,你用任何一种语言 实现一个注册中心,再加上一个网关,小型微服务就来了。结果就因为 java 生态好,反而成为诟病的理由?
        68
    ymz   104 天前
    你这不是故意引战,还强调不要引战。真实搞笑
        69
    whileFalse   104 天前   ♥ 1
    这是因为大部分 Web 后端 Java 程序员一定需要一个很复杂的框架才能写逻辑。
    所以他们搞微服务就必须要有微服务的框架。

    其他语言,比如 Python、NodeJS,则是————————




    直接怼啊!微服务不微服务的对于业务层不就是这几个函数放在哪儿的区别吗!!!
        70
    ppcoin   104 天前
    学一下 google 怎么排除关键字。。。
        71
    a526796017   104 天前
    看到这种引战帖喷就是了
        72
    sarices   104 天前
    tars 了解一下
        73
    kayv   104 天前
    这是因为 Java 生态好罢了。写啥都可以微服务,C++也一样这么弄啊,thrft,grpc 做微服务,zk 或者 etcd 做服务发现。自己实现负载均衡和降级,web 拼数据你用 node,php,java 都一样。语言不是关键,真心不重要
        74
    jksusu   104 天前
    送楼主一首《在你头上暴扣》
        75
    xuhui54   104 天前
    那你要怪谷歌,屁股坐歪了,你居然怪到 java 来了
        76
    cs419   104 天前
    在不使用 Java 的情况下实现一套微服务 相对的就是要全部都用 Java 实现一套微服务

    这种想法有点偏激 有外国友人打算一年不购买中国产的东西 失败了
    很多产品都是分包生产再组装 强制一条龙或许也能做 但总得考虑成本

    你这种说法下是语言主导 事实上应该是业务为主导
        77
    dk7952638   104 天前
    Java 几十年软件工程的积累与提炼的设计和轮子,在某些入行没几天的人看来就是过度设计和无病呻吟,真的挺搞笑的
        78
    versus117   104 天前
    兄弟,你的说的话就挺引战的了。
        79
    zhang77555   104 天前
    你都知道微服务架构是语言无关的, 那又是谁告诉你,非得有那几个组件才算是微服务了?
    再退一步,那些组件单独看有哪一个是特别难实现的?
    微服务的难点一直都是设计问题, 技术问题都是分布式系统的公共问题
    spring cloud 也是让你专注于设计问题而不用过多操心分布式系统问题,用了 spring cloud 也不见得就是微服务
        80
    qinxi   104 天前
    他们都不好意思说,那我来。因为你喜欢的语言垃圾,连个像样的微服务框架都没有。满意了吗?
        81
    dunhanson   104 天前
    @xsir2020 链接打不开啊
        82
    visonme   104 天前
    不好实现,不好实现不是技术上存在难点,而是放着成熟的第三方组件 /产品不用,自己造个,没感觉这种方式好。

    以前在 nodejs 下,实现过,也只能做个轻服务架构,有些东西全部依赖 nodejs 构建,实现没问题,就是效果不理想。

    后面用 net core 做过,也借助了一些 go/c++开发的组件 /产品
        83
    abcbuzhiming   104 天前
    @cabing 网关和配置中心好说,服务发现和链路追踪其实有难度,想做好并不容易,比如服务发现最符合的 CAP 倾向是倾向 AP,但是除了 eureka 这个已经不再更新的之外,后来的服务发现都是 CP 设计。
        84
    xsir2020   104 天前
    @dunhanson
    应该是中文链接有空格的缘故,
    Microsoft REST API 指南

    试试这个链接
    https://www.hn-tech.net/2019/08/02/%E6%8A%80%E6%9C%AF/Microsoft%20REST%20API%E6%8C%87%E5%8D%97/
        85
    endy   104 天前
    不好意思,java 就这么为所欲为
        86
    cabing   104 天前
    @abcbuzhiming 一般的业务 A 没有很强的要求,可以在短时间内实现最终一致性。

    对一致性需求比较强的业务,只能做额外的处理了~
        87
    jhdxr   104 天前   ♥ 1
    我大概能够理解题主的观点,本身是一个语言无关的东西,却似乎被 java (或者说 spring cloud )弄成了一个事实标准。

    原因很简单,就是如果我想上微服务,有很多基础设施要搭(甚至自己实现),这时候有现成的当然最好了,springcloud 全家桶东西很全,资料也丰富,并且也能够和别的语言协作(优雅和性能是另外一回事),自然成为了第一选择。

    其实备选项也还是有的,比如 AWS 也提供了全套解决方案。但被某一个云平台绑死,和被某一个语言绑死。我选后者。

    再有,更理想的情况是比如类似 HTTP,我只是制定了传输的规范,但你可以用不同语言去实现。如果微服务中的各个基础设施能够有这样的规范,然后哪怕不同语言实现的基础设施也能一起协作,似乎会更理想一些。(理论上 spring cloud 的那些可以有别的语言的实现,但实际上并没有,因为它并不像 java 有 specs,它的实现就是标准。。。参考 php 就只有 zend engine,Facebook 当年想搞一个新的时候还得先自己整理一遍 specs )
        88
    iffi   104 天前
    别吵了,PHP 是世界上最好的语言
        89
    janxin   104 天前 via iPad
    @jhdxr 其他语言也有类似的选项,很多楼上也提过。不过用 Java 最近几年多是不争的事实,要想超过 Java,要靠社区每人的力量,多产出高质量的优秀文章才行
        90
    itskingname   104 天前 via iPhone
    @jhdxr 终于遇到认真讨论问题的明白人了。
        91
    yiyi11   104 天前 via Android
    所以说,老有人吐槽 java 啰嗦,笨重,好的语言好的语法有很多,但是 java 真正屹立不倒的原因是生态为王。
        92
    yiyi11   104 天前 via Android
    springcloud 和 java8 刚出来的时候,有句话叫,20 年过去了,java 的春天才刚刚开始。
        93
    nichijou   104 天前
    lz 情商低,认个错得了,还在一直赞没喷自己的为明白人,等于把其他人又都骂了一遍。
        94
    passerbytiny   104 天前
    @itskingname #85 “下沉此贴,另开一贴,只说明需要是不使用 Java 实现微服务”,如果你在刚开始被怼的时候就这么干,你会得到你想要的讨论。现在,建议你重新注册。
        95
    luozic   104 天前 via iPhone
    基于 knative k8s 构建分布式微服务系统,咋就一定要 Java 了?
        96
    cnzjl   104 天前
    只是 Java 人的数量比较庞大而已,而且现在用 SpringCloud 的又比较多,所以搜索引擎权重占比比较高吧,楼主看到这个没必要这么想吧,如若是其他语言所实现的微服务更好,楼主是不是又要问这样的了?
        97
    janus77   103 天前
    你搜的是中文“微服务”吧,国内市场背景下肯定是 java 语言讨论的多一些。
    为什么你会产生“搜不到所以没有”的错觉
        98
    sazima   103 天前
    micro service -java
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4293 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 30ms · UTC 01:55 · PVG 09:55 · LAX 17:55 · JFK 20:55
    ♥ Do have faith in what you're doing.