Kite is a framework for developing micro-services in Go. kite是一个基于go语言的微服务框架,底层的rpc框架使用thrift做服务间通信.
They can discover other kites using a service called Kontrol, and communicate with them bidirectionaly. The communication protocol uses a WebSocket (or XHR) as transport in order to allow web applications to connect directly to kites.
使用Kontrol做服务发现,websocket做网络通信
Kontrol
websocket
https://www.cnblogs.com/fuqiang88/p/5956363.html
websocket定义:
对比 http:基于tcp的应用层协议 tcp socket: websocket:基于tcp的网络协议,弥补了http协议的无状态和被动的缺陷,使得运行服务器主动发送信息给客户端,并且通过保持连接避免了http的无状态的问题. xhr(XMLHttpRequest):
这几种通信方式的示例代码及对比
(html5,httpwebsocket)
网络通信的方式:
远程过程调用是两个服务器之间的互相通信,也就是进程间通信,进程间的通信方式有很多,从通信协议上来说,有传输层的TCP/IP,应用层的HTTP.常常听说的Socket是对TCP/IP协议进行封装后提供的编程接口.
Socket传输的是字节码,一个完整的rpc框架应该包括数据的序列化功能. //todo socket传输过程
序列化就是把对象的状态信息转换为可以存储或传输的形式,序列化的方式有很多,不同的语言也会提供序列化方法.但如果要在不同的语言之间传递对象,就必须把对象序列化为标准格式,如JSON,XML等.
综上,一个完整的rpc框架包含的模块有:
- 数据读写
- 序列化
- 数据传输
其他
对于复杂的服务间调用,我们抽象出五元组的概念:(From, FromCluster, To, ToCluster, Method)。每一个五元组唯一定义了一类的RPC调用。以五元组为单元,我们构建了一整套微服务架构。 我们使用 Go 语言研发了内部的微服务框架 kite,协议上完全兼容 Thrift。以五元组为基础单元,我们在 kite 框架上集成了服务注册和发现,分布式负载均衡,超时和熔断管理,服务降级,Method 级别的指标监控,分布式调用链追踪等功能。目前统一使用 kite 框架开发内部 Go 语言的服务,整体架构支持无限制水平扩展。 Go 的并发属于 CSP 并发模型的一种实现,CSP 并发模型的核心概念是:“不要通过共享内存来通信,而应该通过通信来共享内存”。这在 Go 语言中的实现就是 Goroutine 和 Channel。 thrift包含的三个组件 protocol:协议层,定义序列化 transport:客户端和服务端的通信 server:从transport接收消息,并写回