Go合集,gRPC源码分析,算法合集】的更多相关文章

年初时,朋友圈见到的最多的就是新的一年新的FlAG,年末时朋友圈最多的也是xxxx就要过去了,你的FLAG实现了吗? 这个公众号2016就已经创建了,但截至今年之前从来没发表过文章,现在想想以前很忙,但更多的也是迷茫,想要写,不知道写点什么,或者写点东西出来了,自己看起来总觉得有点傻,2019年初,给自己立的FLAG是今年一定要把这个公众号运营起来,现在想起来,工作也多年了,有了一些积累,也有一点东西可写,另一个更多的是对自己的总结,分享自己的过程,所幸,今年坚持下来了,好多次想放弃,家人,朋友…
gRPC是Google开源的新一代RPC框架,官网是http://www.grpc.io.正式发布于2016年8月,技术栈非常的新,基于HTTP/2,netty4.1,proto3.虽然目前在工程化方面gRPC还非常不足,但它也值得我们好好研究它,学习他. 1. 使用场景 按照Google的说法,使用广泛,但主要使用场景还是在移动端: Efficiently connecting polyglot services in microservices style architecture(微服务.…
环境: win7_x64,VS2015.grpc_1.3.1 场景: 在客户端中使用grpc连接服务器,在多次输入非法的地址后,再次输入正确的地址连出现连接超时的现象.侯捷先生说过“源码面前,了无秘密”,所以开始分析grpc源码 使用GRPC进行连接的例子: ///< 创建通道 std::shared_ptr<grpc::Channel> channel = grpc::CreateChannel("127.0.0.1:8080", grpc::InsecureCha…
首先需要按照grpc官网上说的办法从github上下载源码,编译,然后跑一跑对应的测试代码.我分析的代码版本为v1.20.0. 在cpp的helloworld例子中,client端,第一个函数是创建channel. GreeterClient greeter(grpc::CreateChannel("localhost:50051", grpc::InsecureChannelCredentials())); 我们从这里开始分析,CreateChannel这个函数的具体实现在src/c…
如果用户量增加后为了解决吞吐量问题,需要引入集群,在openfire中提供了集群的支持,另外也实现了两个集群插件:hazelcast和clustering.为了了解情况集群的工作原理,我就沿着openfire的源代码进行了分析,也是一次学习的过程.   首先理解集群的一些简单概念 集群的目的是让多个实例像一个实例一样运行,这样就可以通过增长实例来增长计算能力.也就是所谓的分布式计算问题,这其中最为关注的一个特性就是——CAP理论,也就是所谓的一致性.可用性.分区容错性.集群中最核心解决的问题就是…
gRPC中,Server.Client共享的Class不是很多,所以我们可以单独的分别讲解Server和Client的源码. 通过第一篇,我们知道对于gRPC来说,建立Server是非常简单的,还记得怎么写的?还是以example里 HelloWorldServer 例子来看 server = ServerBuilder.forPort(port) .addService(new GreeterImpl()) .build() .start(); 你没有看错,就是这么几行搞定. 如果需要看懂gR…
Redis集群 Redis支持集群模式,集群中可以存在多个master,每个master又可以拥有多个slave.数据根据关键字映射到不同的slot,每一个master负责一部分的slots,数据被存储在负责它的slot的master节点上.slave会同步它的master节点上的数据到本节点,当master节点挂掉时,slave可以上升为master节点继续服务,保障集群的完整性与可靠性. Redis集群中的每一个节点都拥有其它所有节点的信息,任意节点都知道客户端请求的数据被存储在哪一个mas…
引子 前几天看到微信后台团队分享了TLS相关文章,正好gRPC里TLS数据加密是很重要的一块,于是整理出了这篇文章. 在gRPC里,如果仅仅是用来做后端微服务,可以考虑不加密.本文太长,先给个大纲. 1. HTTPS,HTTP/2介绍 2. TLS加密原理.实现库 3. HTTP/2协议协商机制 4. 自建数字证书(CA) 5. gRPC使用TLS 1. HTTP/1.x 目前绝大多数网站和APP都是建立在HTTP之上的,所有的数据都是明文传输,没有任何安全可言. 网图 2. HTTPS HTT…
解析封装 ResultMap 是和结果集相关的东西,最初在解析 XML 的时候,于 parseStatementNode 方法中,针对每一个 select 节点进行解析,转换为 MappedStatement(类似 Spring 的 bean 配置和 BeanDefinition 的关系). 在 MapperBuilderAssistant 的 addMappedStatement 方法中,构建完statementBuilder,会调用 setStatementResultMap 方法给其设置…
Redis集群消息 作为支持集群模式的缓存系统,Redis集群中的各个节点需要定期地进行通信,以维持各个节点关于其它节点信息的实时性与一致性.如前一篇文章介绍的,Redis在专用的端口监听集群其它节点的连接,将集群内部的的通信与客户端的通信区分开来,任意两个节点之间建立了两个tcp连接,形成一条全双工的通道.这篇文章将从集群消息方面进行介绍,主要介绍消息的格式.种类与不同场景下的消息处理. 1. 消息格式 首先,Redis集群通信使用的消息可分为消息头与消息体两部分:消息头包含了发送消息的节点的…