专注linux服务端编程

proto文件定义 // Interface exported by the server. service RouteGuide { // 一个标准的rpc调用 rpc GetFeature(Point) returns (Feature) {} // 一个server返回给客户端一个stream的调用 rpc ListFeatures(Rectangle …

protobuf原生的异步调用 void DoneCallback(PingMessage *response) { } void async_test() { RpcClient client("127.0.0.1", 8000); PingService::Stub stub(client.Channel()); if (!clien …

Channel Channel层中有关的几个类: grpc_channel, grpc_channel_stack, grpc_channel_element, grpc_call_stack, grpc_call_element, grpc_channel_filter: 其中grpc_channel_stack与grpc_channel_element用 …

GPRC同步调用分析

GRPC 对于写过rpc底层框架的人来说,都会去考虑怎么怎么通过方法名去执行service中对应函数的方式,对于java这样反射能力强的语言,可以很方便的通过一个字符串得到一个类的Method对象,然后再去调用invoke方法来执行;但是对于像c/cpp这样没有反射的语言,它怎么去通过方法名执行具体的方法呢? 最简单的想法是: class Hello { p …

Docker

Docker是什么 简单的理解docker是一个轻量级的虚拟机 虚拟机VSDocker 优点 更小更快 更好的资源利用 很多年前,那时候还没有虚拟化,当我们需要创建一个新服务时,我们必须申请实际的物理机硬件。 这可能要花上数月,依赖于公司的流程。一旦服务器到位,我们创建好服务,很多时候它并没有像我们希望的那样成功,因为服务器的CPU使用率只有5%。 太奢侈了 …

git总结

git相对svn好处 直接记录快照,而非差异比较 svn记录方式: git记录方式: 这样做的好处是以空间换时间,当我们提交时,不用去计算差异;当checkout时,直接拉取快照,而svn对每个文件要进行大量的合并操作. git在本地就可以用 svn缺点是中央服务器的单点故障。若是宕机一小时,那么在这一小时内,谁都无法提交更新、还原、对比等,也就无法协同工作 …

以非交互模式安装软件 在我们使用linux安装软件时,常常会弹出文本框让我们选择,但是在docker通过Dockerfile生成镜像时,它是非交互shell,可能会出现安装失败,要在运行Run命令时指定 DEBIAN_FRONTEND=noninteractive,它明确告诉了linux的程序安装器当前是非交互式shell RUN DEBIAN_FRONTE …

docker 网络之Bridge

总体结构 docker 默认网络模式是Bridge,在docker damon启动时,它会创建一个dokcer0的虚拟网卡,所以的容器中的网络数据都会经过这个虚拟网卡做转发。而容器中相对于docker0来说是nat模式; 外部网络访问内部网络 在启动container时,可以在参数中传递-p 80(相当于80:80,前者是内部网络的端口,后者是映射到host …