Golang微服务总结和工具栈

Programming2年前 (2022)更新 bruce
555 0
内容纲要

Golang微服务工具栈繁多,整理记录之间关系和适用场景

总结

使用go-micro编写服务。
使用micro工具集来访问这些服务

https://github.com/micro/go-micro/v2

https://github.com/micro/micro

https://m3o.com/docs/index.html

github.com/coreos/etcd

目标是构建一个高可用的分布式键值(key-value)数据库。etcd内部采用raft协议作为一致性算法,etcd基于Go语言实现。
参考:https://www.hi-linux.com/posts/40915.html

基于golang微服务准备工作和规范

  • 技术栈:Golang、mysql\postgresql、Redis、RabbitMQ\Kafka
  • 数据序列化协议:protobuf
  • gRPC:定义了四种服务方法,有别普通的API
  • 服务注册:写入Key对应节点服务IP和端口
  • 服务发现:CAP理论和Raft算法
  • 服务治理:数据采集与监控、配置中心(多个服务公用同一个配置)、保证数据一致性
  • 发布部署:jenkis(自动化预编译)、gitlab(代码协同)、docker(容器)、kubernetes(管理容器关系)
  • 微服务框架:go-micro,插件化RPC微服务框架
  • gitlab:抽离公共服务作为单独的软件包发布
  • Proto:自动化维护80%+的Client和Server代码
  • go-micro:解决调用和部署规范,好扩展维护, 先写proto,编译proto,启动

基础规范总结

  • 资源规范,api、fnc(函数)、srv、web,比如”greeter”属于一个后端服务,我们把它定义为”srv.greeter”,这样micro就知道了这个服务是srv分类
  • 命名空间,project1.srv.greeter,表示greeter资源属于project1
  • gRPC服务访问和部署,按照[命名空间].[资源类型].[服务名]定义服务,跨服务访问部署,可创建服务对应的客户端
  • 三层架构,三层架构组织众多微服务,
    • micro api: http访问入口
    • some api: 对外暴露的API服务
    • some service: 内网的后台服务
  • ACME( Automatic Certificate Management Environment)是由Let’s Encrypt制定的安全协议 通过–enable_acme=true或者设置环境MICRO_ENABLE_ACME=true
  • API处理器
© 版权声明

相关文章

暂无评论

暂无评论...