微服务使用rpc协议
每个服务被封装成进程,都是独立的
进程和进程之间通信,可以使用不同的协议 包括但不限于(php go java python c/c++) 比如php对接以太坊平台就是典型使用
### 1. RPC简介
远程过程调用(Remote Procedure Call,RPC)是一个计算机通信协议
该协议允许运行于一台计算机的程序调用另一台计算机的子程序,而程序员无需额外地为这个交互作用编程
如果涉及的软件采用面向对象编程,那么远程过程调用亦可称作远程调用或远程方法调用
*** 像调用本地函数一样调用远程函数 ***
通过rpc协议,传递函数名,函数参数,达到在本地调用远端函数的返回值到本地的目标
### 2. go socket
远程----网络!!!
service端:
net.Listen() ----- listener监听者 创建监听器
listener.Accept() ---- conn套接字 启动监听 建立连接
conn.read()
conn.writer()
conn.Close()
defer listener.Close() // 延迟关闭
client端:
net.Dial()---- conn
con.Write()
conn.Read()
defer conn.Close()
### 3.rpc使用步骤
服务端:
1 注册rpc服务对象,给对象绑定方法 (1 定义类 2 绑定类方法)
rpc.RegisterName("服务名",回调对象)
2 创建监听器
listener,err := net.Listen()
3 建立连接
conn,err := listener.Accept()
4 将连接绑定rpc服务
rpc.ServeConn(conn)
客户端:
1 用rpc连接服务器
conn,err := rpc.Dial()
2 调用远程函数
conn.Call("服务名.方法名",传入参数,传出参数)
### TCP/IP 四层模型
1 应用层
2 传输层
3 网际层
4 网络访问层
### OSI七层模型
1 应用层
网络服务与最终用户的一个接口。
协议有:**HTTP FTP TFTP SMTP SNMP DNS TELNET HTTPS POP3 DHCP
2 表示层
数据的表示、安全、压缩。
格式有,**JPEG、ASCll、EBCDIC、加密格式等
3 会话层
建立、管理、终止会话。
对应主机进程,指本地主机与远程主机正在进行的会话
4 传输层
定义传输数据的协议端口号,以及流控和差错校验。
协议有:TCP UDP,数据包一旦离开网卡即进入网络传输层
5 网络层
进行逻辑地址寻址,实现不同网络之间的路径选择。
协议有:ICMP IGMP IP(IPV4 IPV6)
6 数据链路层
建立逻辑连接、进行硬件地址寻址、差错校验\等功能。(由底层网络定义协议)
将比特组合成字节进而组合成帧,用MAC地址访问介质,错误发现但不能纠正。
7 物理层
建立、维护、断开物理连接。(由底层网络定义协议)
- 环境安装
- 基础学习
- 基础语法
- 判断语句
- 数组
- 切片
- 函数
- 协程Goroutine
- 管道channel
- 结构体
- gin框架
- gin安装
- gin模板加载
- gin加载静态文件
- gin路由分组
- gin获取get参数
- gin获取post参数
- gin中cookie会话
- gin中session会话
- beego框架
- rpc
- gorm
- gorm安装
- protobuf
- 安装
- 编译
- grpc
- grpc安装
- 创建proto文件
- 创建服务端
- 创建客户端
- 服务发现consul学习
- consul安装
- consol结合grpc的服务端示例
- consol结合grpc的客户端示例
- go-micro
- go-micro安装
- micro命令创建项目