
RPC框架
文章平均质量分 87
RPC框架&thrift的编译器compiler&词法分析&语法分析
跟 屁 虫
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
libevent
文章目录前言概述基本函数介绍event_initevent_setevent_dispatchevent_base_setevent_addevent_base_loopevent_base_dispatch重要结构体实现一个简单的server使用buffereventbufferevent高级前言概述官网:https://libevent.org/使用文档:https://www.monkey.org/~provos/libevent/doxygen-2.0.1/index.htmllib转载 2021-06-09 15:02:00 · 766 阅读 · 0 评论 -
thrift源码解析之concurrency
文章目录前言Thread1.getState()2.setState()Runnable前言由于thrift的server支持高并发,所以简单的将concurrency目录下的代码分析一下thrift文章整理:1.thrift简介2.thrift源码解析之compiler3.thrift源码解析之processor4.thrift源码解析之protocol5.thrift源码解析之transport6.thrift源码解析之server7.thrift源码解析之concurrency原创 2021-06-08 14:50:22 · 765 阅读 · 0 评论 -
thrift源码解析之server
前言:有关网络编程参考文章:void TServerFramework::serve() { shared_ptr<TTransport> client; shared_ptr<TTransport> inputTransport; shared_ptr<TTransport> outputTransport; shared_ptr<TProtocol> inputProtocol; shared_ptr<TProtocol>原创 2021-06-01 15:02:43 · 1516 阅读 · 2 评论 -
thrift源码解析之transport
template <class Transport_> uint32_t readAll(Transport_ &trans, uint8_t* buf, uint32_t len) { uint32_t have = 0; uint32_t get = 0; while (have < len) { get = trans.read(buf+have, len-have);//通过具体的传输类读取剩余的需要读取的数据 if (.转载 2021-05-13 17:55:13 · 1212 阅读 · 0 评论 -
thrift简介
在实际的大型分布式系统中,不同的服务往往会使用不同的语言来实现,所以一般的 RPC 系统会提供一种跨语言的过程调用功能,比如一段用C++实现的客户端代码可以远程调用一个用 Java 实现的服务。实现跨语言 RPC 有两种方法:· 静态代码生成:开发者用一种中间语言(IDL,接口定义语言)来定义 RPC 的接口和数据类型,然后通过一个编译器来生成不同语言的代码(如C++, Java, Python),并由生成的代码来负责 RPC 协议层和传输层的实现。例如,服务的实现用C++,则服务端需要生成实现RPC协议转载 2021-04-29 13:02:59 · 664 阅读 · 0 评论 -
BNF学习笔记
文章目录前言规范产生式编写例递归左递归:右递归:消除左递归:编写BNF前言可能得学习编译原理了,头大RPC框架文章连载:1.RPC框架2.IDL3.thrift框架4.词法分析&语法分析 1.词法分析——lex/flex 2.thrift的flex文件:thriftl.ll以及生成的thriftl.cc文件 3.语法分析——yacc/Bison 4.thrift的yacc文件:thrifty.yy以及生成的thrifty.cc文件5.自己实现一个IDL语法编译器规范转载 2021-04-27 15:04:28 · 876 阅读 · 0 评论 -
lemon语法分析生成器的使用以及源代码分析
特点以及优点1、Lemon是一个C或者C++语言的LALR(1)语法分析器生成器。2、它和“bison”与“yacc”的功能是一样的,但它不是“bison”或者“yacc”的简单复制。3、为了减少编写代码的错误,它使用了一种不同的语法。4、Lemon使用了一种更为高级的分析引擎,运行速度比“bison”与“yacc”要更快,并且该引擎是可重入的和线程安全的。生成的解析器是可重入和线程安全的。5、更进一步的,Lemon引入了非终结符析构器的概念,实现了能够消除资源泄漏的特性,适合于长时间运行的程序例原创 2021-04-25 17:00:41 · 1450 阅读 · 0 评论 -
thrift源码解析之processor
挖坑待写转载 2021-04-13 13:41:51 · 1423 阅读 · 2 评论 -
thrift源码解析之protocol
挖坑待写转载 2021-04-13 12:52:32 · 968 阅读 · 2 评论 -
thrift源码解析之compiler
文章目录前言前言挖坑待写1.thrift源码解析之compiler2.thrift源码解析之protocol3.thrift源码解析之processor4.thrift源码解析之server原创 2021-04-13 12:51:08 · 674 阅读 · 0 评论 -
c10k问题
所谓c10k问题,指的是:服务器如何支持10k个并发连接,也就是concurrent 10000 connection(这也是c10k这个名字的由来)。由于硬件成本的大幅度降低和硬件技术的进步,如果一台服务器能够同时服务更多的客户端,那么也就意味着服务每一个客户端的成本大幅度降低。从这个角度来看,c10k问题显得非常有意义。一、C10K问题由来互联网的基础是网络通信,早期的互联网可以说是一个小群体的集合。互联网还不够普及,用户也不多,一台服务器同时在线100个用户,在当时已经算是大型应用了,所以并不存在转载 2021-04-12 16:32:52 · 446 阅读 · 0 评论 -
互联网分布式系统架构“高并发”介绍
一、什么是高并发高并发(High Concurrency)是互联网分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计保证系统能够同时并行处理很多请求。高并发相关常用的一些指标有响应时间(Response Time),吞吐量(Throughput),每秒查询率QPS(Query Per Second),并发用户数等。二、如何提升系统的并发能力互联网分布式架构设计,提高系统并发能力的方式,方法论上主要有两种:垂直扩展(Scale Up)与水平扩展(Scale Out)。垂直扩展:提升单机处理转载 2021-04-12 15:04:18 · 641 阅读 · 0 评论 -
互联网架构“高可用”
一、什么是高可用高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。假设系统一直能够提供服务,我们说系统的可用性是100%。如果系统每运行100个时间单位,会有1个时间单位无法提供服务,我们说系统的可用性是99%。很多公司的高可用目标是4个9,也就是99.99%,这就意味着,系统的年停机时间为8.76个小时。百度的搜索首页,是业内公认高可用保障非常出色的系统,甚至人们会通过www.baidu.com 能不能访问来转载 2021-04-12 14:54:53 · 202 阅读 · 0 评论 -
语法分析器的生成器——Bison
该complier采用bison语法分析生成器来生成语法分析代码。语法分析是指在词法分析的基础上将单词序列组合成各类语法短语,如“程序”,“语句”,“表达式”等等。语法分析程序判断源程序在结构上是否正确。其中源程序的结构由上下文无关文法描述。bison通过编译thrifty.yy生成thrifty.h和thrifty.cc文件,这两个文件即是该compiler的语法分析代码。...转载 2021-04-09 17:14:48 · 8412 阅读 · 0 评论 -
词法分析器的生成器——lex/flex
文章目录前言编译器概述词法分析简介flex初步体验flex进阶yylex()模式匹配flex常用全局变量和宏条件模式前言关于lex和yacc的介绍看文章:编译原理之lex,yacc学习关于flex和lex其实是类似的,lex不再赘述。此文章主要介绍flex。thrift框架的compiler采用flex词法分析生成器来生成词法分析代码。flex通过编译thriftl.ll生成thriftl.cc文件,thriftl.cc即是该compiler的词法分析代码。对于flex只弄懂其原理与用法,不追究原创 2021-04-09 17:17:34 · 6416 阅读 · 0 评论 -
RPC及代码实现&ILD基础语法&thrift框架使用c++
RPCILD基础语法ILD基础编程thrift框架使用C++thrift源码分析thrift在Linux中使用c++Transport的类结构实现:TProtocol的类结构实现:TServer:TServer相当于一个容器,拥有生产TProcessor、TTransport、TProtocol的工厂对象。它的工作流如下:使用TServerTransport来获取一个TTransport(客户端的连接)使用TTransportFactory来将获取到的原始的transport转转载 2021-04-02 17:56:09 · 241 阅读 · 0 评论