0x00 开发语言 + 框架
- Golang
- RPC:gRPC-go
- Web:go-gin 或其他通用的 Web 框架
- 微服务框架:Kratos(强烈推荐)、Micro、go-chassis
0x01 微服务划分
在微服务实践中,如何切分微服务,总结了一些原则如下:
微服务化:
- 逻辑独立、边界清晰的模块作为一个独立的微服务
- 微服务架构中,服务的注册与发现是必不可少的
- 微服务间的同步调用,尽量使用 RPC 方式,采用 Service discovery 方式进行,服务注册中心推荐 etcd 或 consul
- 微服务之间的通信,尽可能采用消息队列实现松耦合,当需要同步调用时再借助于 RPC
存储 && 缓存:
- 每个 table 尽量保证只由一个微服务操作(包括插入、读取、更改、删除等)
- table 之间不引入外键约束,id 字段全部采用 uuid,id 只做 primary key 使用
- 将需要保持数据一致性的操作放在一个微服务中,避免跨服务带来的数据一致性问题
部署:
- 微服务以独立的容器化部署
0x02 微服务模块
下面这张图,基本涵盖了微服务开发上线过程中的知识点:
0x03 参考
转载请注明出处,本文采用 CC4.0 协议授权
FEATURED TAGS
Latex
gRPC
负载均衡
OpenSSH
Authentication
Consul
Etcd
Kubernetes
性能优化
Python
分布式锁
WebConsole
后台开发
Golang
OpenSource
Nginx
Vault
网络安全
Perl
分布式理论
Raft
正则表达式
Redis
分布式
限流
go-redis
微服务
反向代理
ReverseProxy
Cache
缓存
连接池
OpenTracing
GOMAXPROCS
GoMicro
微服务框架
日志
zap
Pool
Kratos
Hystrix
熔断
并发
Pipeline
证书
Prometheus
Metrics
PromQL
Breaker
定时器
Timer
Timeout
Kafka
Xorm
MySQL
Fasthttp
bytebufferpool
任务队列
队列
异步队列
GOIM
Pprof
errgroup
consistent-hash
Zinx
网络框架
设计模式
HTTP
Gateway
Queue
Docker
网关
Statefulset
NFS
Machinery
Teleport
Zero Trust
Oxy
存储
Confd
热更新
OAuth
SAML
OpenID
Openssl
AES
微服务网关
IM
KMS
安全
数据结构
hashtable
Sort
Asynq
基数树
Radix
Crontab
热重启
系统编程
sarama
Go-Zero
RDP
VNC
协程池
UDP
hashmap
网络编程
自适应技术
环形队列
Ring Buffer
Circular Buffer
InnoDB
timewheel
GroupCache
Jaeger
GOSSIP
CAP
Bash
websocket
事务
GC
TLS
singleflight
闭包
Helm
network
iptables
MITM
HTTPS
Tap
Tun
路由
wireguard
gvisor
Git
NAT
协议栈
Envoy
FRP
DPI
gopacket
Cgroup
Namespace
DNS
eBPF
GoZero
Gost
Clash
gopsutil
HIDS
ELKEID
XDP
TC
Linux
netlink