服务发现
使用DNS进行服务发现
服务注册&发现原理
服务发现接口定义
基于etcd的服务发现开发
服务发现的两种方案
1.使用DNS进行服务发现
2.基于SDK的形式进行服务发现
使用DNS进行服务发现
传统DNS方案
1.非高可用 2.不支持动态变更 3.域名解析生效慢
使用dns进行服务发现
Kube-DNS如何解决这些问题?
集中式的DNS进行服务发现
1.系统存在单点
2.去掉单点故障
使用dns进行服务发现
参考资料
https://draveness.me/dns-coredns
https://github.com/coredns/coredns
https://www.cncf.io/community/webinars/introduction-to-coredns/
http://www.servicemesher.com/blog/ant-financial-service-mesh-adoption-plan/
基于sdk的服务发现功能设计
目标
1. 不影响主流程 2.节点准实时更新
服务发现设计
接口定义
//服务注册插件的接口
type Registry interface{
//插件的名字
Name() string
//初始化
Init(ctx context.Context,service *Service)(err error)
//服务注册
Register(ctx context.Context,service *Service)(err error)
//服务反注册
Unregister(ctx context.COntext,service *Service)(err error)
//服务发现:获取服务名对应的服务
GetService(ctx context.COntext,name string)(service *Service,err error)
}
服务发现
1.GetService核心流程
2.基于etcd进行开发