TARS
文章平均质量分 95
腾讯开源多语言微服务治理框架
迪崽~
I do what I love.
展开
-
RPC框架的网络线程模型
一、RPC的网络IO模型1、连接独占线程或进程: 在这个模型中,线程/进程处理来自绑定连接的消息,在连接断开前不退也不做其他事情。当连接数逐渐增多时,线程/进程占用的资源和上下文切换成本会越来越大,性能很差,这就是C10K问题的来源。这种方法常见于早期的web server,现在很少使用。2、单线程reactor: 以libevent, libev等event-loop库为典型。这个模型一般由一个event dispatcher等待各类事件,待事件发生后原地调用对应的event handler,全部调用原创 2021-03-21 18:58:35 · 988 阅读 · 0 评论 -
RPC框架的连接模型
一、RPC的客户端连接模型1、连接成本: 使用TCP协议时,会在客户端和服务器之间建立一条虚拟的信道,这条虚拟信道就是指连接,而建议这条连接需要3次握手,拆毁这条连接需要4次挥手,可见,我们建立这条连接是有成本的,这个成本就是效率成本,简单点 说就是时间成本,你要想发送一段数据,必须先3次握手(来往3个包),然后才能发送数据,发送完了,你需要4次挥手(来往4个包)来断开这个连接。 其二,CPU资源成本,三次握手和4次挥手和发送数据都是从网卡里发送出去和接收的,还有其余的设备,比如防火墙,路由器等等,站在操原创 2021-03-21 18:54:01 · 1688 阅读 · 0 评论 -
长连接的watch机制实现
前言:对于于HTTP协议来说,服务端给一次响应后整个请求就结束了,这是HTTP请求最大的特点,也是由于这个特点,HTTP请求无法做到的是服务端向客户端主动推送数据。但由于HTTP协议的广泛应用,很多时候确实又想使用HTTP协议去实现实时的数据获取,这种时候应当怎么办呢?下面首先介绍几种基于HTTP协议的实时数据获取方法。一、连接TCP连接中四个要素组合体的唯一性:客户端的IP、客户端的port、服务器端的IP、服务器端的port。1、长连接: 长连接是指的TCP连接,而不是HTTP连接。从HTTP1.原创 2021-03-18 20:29:32 · 1823 阅读 · 0 评论 -
RPC框架的异步处理
一、RPC异步调用(以tars rpc框架为示例说明)引入工作线程池和io收发线程池将工作线程和io收发线程两者的同步关系解除。RPC中的上下文十分重要,因为请求包的发送,响应包的callback回调不在同一个工作线程中完成,需要一个context来记录一个请求的上下文,把请求-响应-回调等一些信息匹配起来。通过rpc框架的内部请求id作为key,来保存调用开始时间time,超时时间timeout,回调函数callback,超时回调timeout_callback等信息。注意:请求id由client端服务原创 2020-12-15 14:57:40 · 2189 阅读 · 0 评论 -
网络IO并发的底层分析
一、IO1、IO 类型大部分的socket接口都是阻塞型的。所谓阻塞型接口是指系统调用(一般是IO接口)不返回调用结果并让当前线程一直阻塞,只有当该系统调用获得结果或者超时出错时才返回。select系统调用是用来让我们的程序监视多个文件句柄的状态变化的,需要指明select函数与【阻塞/非阻塞socket】没有关系。select函数本身调用是阻塞的(与socket是否阻塞并没有关系), 直到有监测时间发生(返回 > 0)、 超时(返回0)、select函数错误 (返回-1)。一个套接字socke原创 2020-11-27 11:49:28 · 407 阅读 · 2 评论 -
秒杀系统的设计和思考
秒杀系统的难点首先我们先看下秒杀场景的难点到底在哪?在秒杀场景中最大的问题在于容易产生大并发请求、产生超卖现象和性能问题,下面我们分别分析下下面这三个问题:1)瞬时大并发: 一提到秒杀系统给人最深刻的印象是超大的瞬时并发,这时你可以联想到小米手机的抢购场景,在小米手机抢购的场景一般都会有10w+的用户同时访问一个商品页面去抢购手机,这就是一个典型的瞬时大并发,如果系统没有经过限流或者熔断处理,那么系统瞬间就会崩掉,就好像被DDos攻击一样;2)超卖:秒杀除了大并发这样的难点,还有一个所有电商都会遇到的原创 2020-08-12 22:58:48 · 674 阅读 · 0 评论 -
tarsgo 服务端框架处理流程
原创 2020-07-10 16:54:34 · 307 阅读 · 0 评论 -
tarsgo 客户端框架处理流程
原创 2020-07-10 16:50:18 · 218 阅读 · 0 评论 -
HTTP和RPC的关系分析
RPC由来:RPC 风格对应的是 Restful风格。 出发点: RPC 的含义来看(远程过程调用) ,认为只要实现远程调用即可,实现的方式可以是HTTP基于应用层的协议,也可以是Socket基于传输层协议 因为Socket编程是比较复杂的,所以Dubbo在Socket编程方面是用的Netty来实现。所以RPC只是一种风格。 举一个例子: 谷歌的grpc框架,底层就是基于Http2.0 来实现。区别的话,有人认为http不属于rpc体系,基于socket的tcp方式通信的才算rpc。然而rpc的原理就是。原创 2020-05-11 00:03:37 · 1233 阅读 · 0 评论 -
微服务简介
微服务治理体系: 服务治理是主要针对分布式服务框架,微服务,处理服务调用之间的关系,服务发布和发现(谁是提供者,谁是消费者,要注册到哪里),出了故障谁调用谁,服务的参数都有哪些约束(尤其是dubbo.xml配置),如何保证服务的质量?如何服务降级和熔断?怎么让服务受到监控,提高机器的利用率?网关就是整个整体的守门人,日志采集,追踪工具,服务注册发现都是用来采集信息的,然后需要监控平台来展现这些采...原创 2019-12-14 10:11:42 · 126 阅读 · 0 评论 -
tars客户端寻址
如果需要通过名字来获取客户端调用代理,则必须设置locator参数;locator: registry服务的地址,必须是有ip port的,如果不需要registry来定位服务,则不需要配置;...原创 2019-12-03 17:08:42 · 533 阅读 · 0 评论 -
tars协议序列化分析
引言tars序列化过程:TARS编码协议是一种数据编解码规则,它将整形、枚举值、字符串、序列、字典、自定义结构体等数据类型按照一定的规则编码到二进制数据流中。对端接收到二进制数据流之后,按照相应的规则反序列化可得到原始数值。简单理解,TARS编码协议提供了一种将数据序列化、反序列化的方法。其角色和我们认识的protobuf、json、xml等同。流程分析1.客户端原始请求数据----&g...原创 2019-12-02 21:17:17 · 1186 阅读 · 0 评论 -
序列化概述
序列化与TCP/IP协议TCP/IP协议是一个四层协议,而OSI模型却是七层协议模型。在OSI七层协议模型中展现层(Presentation Layer)的主要功能是把应用层的对象转换成一段连续的二进制串,或者反过来,把二进制串转换成应用层的对象–这两个功能就是序列化和反序列化。一般而言,TCP/IP协议的应用层对应与OSI七层协议模型的应用层,展示层和会话层,所以序列化协议属于TCP/IP协...原创 2019-12-02 17:23:22 · 366 阅读 · 0 评论 -
Tars- zipkin环境本地搭建
下载opentraceing-cpp 客户端调用的代码,网址为:opentraceing-cpp。注意要下稳定tag版本的代码。下载后,编译安装,生成特定的头文件和库文件到特定目录。 下载 zipkin-cpp-opentracing 客户端调用的代码,网址为:zipkin-cpp-opentracin,下载后,编译安装。生成特定的头文件和库文件到特定目录。 ...原创 2019-11-25 19:40:29 · 692 阅读 · 0 评论