Golang Go语言中大家微服务都是什么方案?

发布于 1周前 作者 wuwangju 来自 Go语言

1.使用微服务框架 2.直接 k8s 不知道大家生产环境 golang 的微服务方案怎么做的,希望一起讨论学习下


Golang Go语言中大家微服务都是什么方案?
40 回复
  1. go-zero
    2. k8s

更多关于Golang Go语言中大家微服务都是什么方案?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


微服务框架在 k8s 内部署。

1 、go-kratos
2 、k8s 、k3s

gin+consul+阿里云 ACK

简单的直接用 k8s ,

复杂一点的通过 istio 改造

好奇怪的问题,K8s 和业务没什么关系啊,只是用来做 declarative 运维的。

字节的 hterz + kitex 可以考虑下

现在连过去大型国企的 java spring cloud 都在改造为 service mesh, 还搞微服务框架真的是逆历史潮流。
service mesh 多数还能尽可能做到无侵入式, 微服务框架能有几个做到。

看看蚂蚁金服的 sofastack ,istio 和 微软的 dapr 吧。

相关报道很多很多
https://www.sohu.com/a/508786560_515599

#9 spring cloud 我都没搞明白已经要 service mesh 了吗,最近几年发展那么快了吗

一个项目一个镜像,k8s 多 pod 发布就可以了,大部分企业完全够用

dns 作为服务发现注册也算吧

看了下正文)微服务上不上 k8s 并没啥关系。直接一个服务一个 vm 我也见过,不上 k8s 好处就是没学习成本,坏处就是资源浪费。至于运维 cicd 弄好了都一样

springcloud 和 service mesh 并不是替代的关系,架构是会演进的,springcloud 仍然适合大多数中小企业

冷知识,蚂蚁 sofa ,字节 kitex ,但内部的核心应用都是巨型单体(编译产物几个 g ,分钟级启动时间)
所以如果你是一个人,建议一把梭

微服务架构并不适合中小企业。推荐用 gin ,负载均衡。(面向简历编程,当我没说。)

作为配置管理也算吧 🐶

grpc+etcd ?不推荐 go-zero ,bug 多,难维护。其他的没用过。

大道归一,单体项目,前后端不分离

首先问,不用微服务行不行?行?那用它干嘛呢。

#13 不用容器编排好像不太方便快速伸缩服务

如果我没理解错,你说的是这个是大仓模式,但其实,只是项目代码是一个单体,编译是一个单体,但服务是可以按需启动的。
腾讯内部很多项目也是采用大仓模式

grpc+consul ,说 k8s 的都是运维吧

99%的公司不需要 k8s

不用框架,需要什么自己简单封装一个就可以了。

用微服务平台,还是 k8s ,取决于公司/项目组的运维能力以及架构考量。

上个月碰到的一个西门子的项目组,就是 all-in AWS ,完全不搞 k8s ,但也说了内部有其他部门选择维护自己 k8s 集群。

能细说一下吗? 因为个人项目刚开始用 go-zero 。go-zero 目前只是感觉有点臃肿。

struct 不支持 time.Time ,自带的(生成的代码) json unmarshal 有严重 bug ,某些情况会没有值。生成的代码又乱又多,前期代码少的时候还好,后面多了没法维护。还有其他很多问题已经不记得了。
后面就是发现什么的问题,就把它自带的组件换成自己写的。所以还不如一开始就自己把所有东西弄好,不用这玩意。

而且这东西更像 Java 搞得那一套,什么东西都搞得又臭又长,真的一言难尽。

kratos + k8s, 目前这套用的很爽.

微服务和 go 也没啥关系。

就是拿 go 写个服务,然后外面整个 k8s 把几个服务穿起来。

grpc + protobuf 随便撸啊

iac 编排也可以,其实小公司 k8s 不一定是最优解可能会是最差解;甚至伸缩也不一定是需要。至于微服务的话,我觉得刚开始最好别怎么拆。前期拆两个(用户中心+主业务)就是够了,然后生成 http 接口直接给前端。

  1. go zero —— 中文友好
    2. kubernetes 或 TKE
    3. +CI/CD+helm

eagle + docker image + k8s
protobuf -> http + gRPC(服务间)
大部分 脚手架直接生成

PS: https://github.com/go-eagle/eagle

在Golang(Go语言)中,微服务架构的实现方案通常包括以下几个关键组件和技术:

  1. 通信协议

    • gRPC:一个高性能、开源的RPC框架,支持多种编程语言,基于HTTP/2协议,提供双向流、头部压缩和多路复用等特性,能够显著提高服务间的通信效率和可靠性。
    • RESTful API:使用HTTP协议和RESTful风格设计API接口,简单易懂,兼容性好。
  2. 服务管理

    • API Gateway:作为所有客户端请求的入口点,负责请求路由、组合、协议转换以及负载均衡等功能。
    • Nacos:一个动态服务发现、配置管理和服务管理平台,提供包括服务注册与发现、动态配置、DNS服务等多种功能。
  3. 容器化与编排

    • Docker:一种容器化技术,可以将应用程序及其依赖打包成一个标准化的单元,简化应用的部署和管理。
    • Kubernetes:一个开源的容器编排平台,用于自动化应用程序的部署、扩展和管理。
  4. 监控与日志

    • Prometheus:用于收集系统的监控指标。
    • ELK(Elasticsearch、Logstash、Kibana):用于收集和分析日志。

综上所述,Go语言微服务架构的实现方案涉及多个方面,需要综合考虑通信协议、服务管理、容器化与编排以及监控与日志等技术。根据项目的具体需求和团队的熟悉程度,可以选择合适的方案进行实现。

回到顶部