LQH入职第二天(3)

1、grpc学习
(1)grpc.Dial()建立连接过程
(2)没有证书,所以使用grpc.WithInsecure()跳过了证书验证
(3)grpc优缺点:

优点:

1、protobuf二进制消息,性能好/效率高(空间和时间效率都很不错) 2、proto文件生成目标代码,简单易用
3、序列化反序列化直接对应程序中的数据类,不需要解析后在进行映射(XML,JSON都是这种方式)
4、支持向前兼容(新加字段采用默认值)和向后兼容(忽略新加字段),简化升级 5、支持多种语言(可以把proto文件看做IDL文件)
6、Netty等一些框架集成 缺点:

1、GRPC尚未提供连接池,需要自行实现 2、尚未提供“服务发现”、“负载均衡”机制 3、因为基于HTTP2,绝大部多数HTTP
Server、Nginx都尚不支持,即Nginx不能将GRPC请求作为HTTP请求来负载均衡,而是作为普通的TCP请求。(nginx1.9版本已支持)
4、Protobuf二进制可读性差(貌似提供了Text_Fromat功能)
5、默认不具备动态特性(可以通过动态定义生成消息类型或者动态编译支持)

https://www.jianshu.com/p/7392406e2450
2、命令行编译运行Go语言时参数代入的问题
Go的没有了args[]数组参数了,是否意味着,启动Go程序的时候,不能通过传入参数来动态控制执行模式了呢?
Go语言通过另一种方式(flag包),来注入我们想要的参数,简化了main函数。

package main

import "flag"

var name string

func init() {
    flag.StringVar(&name,"name","default","log in user")
}
func main() {
    flag.Parse()//暂停获取参数
    println(name)
}

go run demo1.go -name Alex

flag的方法将name先初始化,然后检查传入的参数,没有的话,就默认是default了。

通过-help方法,我们也可以查看需要传入的参数
go run **.go -help
https://www.jianshu.com/p/1bc25976001d
https://www.cnblogs.com/c-x-a/p/11770348.html
3、Protobuf 的学习
为什么要关注语言,因为它不像 JSON 一样开箱即用,它依赖工具包来进行编译成 java 文件或 go 文件等。
正如硬币的两面性一样,凡事皆有双面性,Protobuf 数据的体量更小,所以自然失去了人类的直接可读性, JSON 数据结构是可以很直观地阅读的,但是 Protobuf 我们需要借助工具来进行更友好地使用。
https://www.jianshu.com/p/cae40f8faf1e
https://www.cnblogs.com/jkkkk/articles/6164520.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值