自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 资源 (2)

原创 服务治理-梳理和调研

1.总体概述1.1.根据实现方式分类微服务1.0: 用库的形式在微服务应用程序中导入使用。 基于nginx,kong等 微服务2.0:用代理的方式为应用服务提供能力-服务网格(Service mesh) 用直接代理的方式, Linkerd1.0 sidecar的形式运行,基于k8s istio 1.2.服务网格-service mesh服务网格(Service mesh)是用于处理服务间通信的专用基础设施层。它负责通过一系列措施来保证服务间请求的可靠传递,对上层业务应用..

2020-08-26 17:33:27 229

转载 K8s网络模型

一、前言k8s对Pods之间如何进行组网通信提出了要求,k8s对集群的网络有以下要求:所有的Pods之间可以在不使用NAT网络地址转换的情况下相互通信 所有的Nodes之间可以在不使用NAT网络地址转换的情况下相互通信 每个Pod自己看到的自己的ip和其他Pod看到的一致k8s网络模型设计基础原则:每个Pod都拥有一个独立的 IP地址,而且 假定所有 Pod 都在一个可以直接连通的、扁平的网络空间中 。 所以不管它们是否运行在同 一 个 Node (宿主机)中,都要求它们可以直接通...

2020-05-26 10:12:29 285 1

转载 高并发-网络IO模型

高并发服务器编程经历了从同步IO到异步IO,从多进程或多线程模型到事件驱动的演变,基于事件的并发编程依赖于操作系统提供的IO多路复用技术。这篇文章从什么是IO多路复用谈起,列举基于事件的高并发服务器,并且对比了select,poll和epoll三种事件通知机制,libevent,libev和libuv三个事件框架,最后给出了分别使用select和epoll实现的echo server示例。CO...

2020-05-26 10:07:02 170

原创 grpc 报错解决 code = Unavailable desc = transport is closing

最近遇到 grpc 客户端报错rpc error: code = Unavailable desc = transport is closing,原因是连接长时间没有使用,被服务端断开,但是看过grpc源码的都知道,如果failfast 设置为false的话,应该会重试的;并且 连接关闭之后grpc.clientConn也会维护这个状态,所以不应该出现这个问题才对,这个是个很奇怪的事情...

2020-03-05 15:21:16 4271

原创 mysql的问题解决:dial tcp connect: connection reset by peer

背景当并发请求高的时候会出现connection reset by peer 这样的错误,也就是 服务端主动关闭了socket但是客户端依然再用分析正常的tcp 建立连接的时候tcp connect 请求进来的时候 服务端 会加入 SYN队列 当三次握手成功之后,会从 SYN队列移动到ACCEPT队列 然后应用层通过accept 方法接受新的socket结论...

2020-03-05 14:40:00 1725

转载 HTTP2协议-二进制帧结构总结

前言:HTTP2引入了二进制分帧层,将普通的请求/响应,拆解为帧实现请求和响应的并发。HTTP2规定了10中类型的帧。本文将对这10种类型的帧做总结。帧的结构:所有的帧都包含一个9 byte的帧头 + 可边长的正文不同。根据帧的类型不同,正文部分的结构也不一样。帧头:Length(3 bypte):表示帧的正文部分Payload的长度。初始设为2^14(1...

2020-02-22 11:05:10 449

原创 记一次服务注册&服务发现的问题和解决(etcd和k8s同时结合使用情况下)

目录背景分析原因总结背景早先的都采用基于grpc+etcd做服务注册和服务发现,都是正常的 后来有部分服务采用k8s部署,为了新旧兼容,服务会按照老方式把宿主机的ip注册到etcd上,k8s体系类使用体系类的服务发现,k8s体系外的依然使用原来的方式,互不影响 但是有服务基于k8s部署之后,发现client调用接口超时,而直接通过ip调用却是正常 且多数是发生在...

2019-11-27 18:20:51 598

原创 网络通信或者LVS相关原理说明-整理

网络:MAC地址表、ARP缓存表、路由表及交换机、路由器基本原理TCP/UDP/IP体系结构和协议简介IP数据报的分片和组装原理LVS-DR(Virtual Server via Direct Routing)原理说明与配置用例LVS负载均衡之持久性连接介绍让LVS更持久LVS原理、模式、调度算法...

2019-10-15 10:47:40 53

转载 MAC地址表、ARP缓存表、路由表及交换机、路由器基本原理

MAC地址表说到MAC地址表,就不得不说一下交换机的工作原理了,因为交换机是根据MAC地址表转发数据帧的。在交换机中有一张记录着局域网主机MAC地址与交换机接口的对应关系的表,交换机就是根据这张表负责将数据帧传输到指定的主机上的。交换机的工作原理 交换机在接收到数据帧以后,首先、会记录数据帧中的源MAC地址和对应的接口到MAC表中,接着、会检查自己的MAC表中是否...

2019-10-15 10:36:43 142

原创 mysql连接池长连接机制无效的问题排查-(go-sql-driver的问题)

背景:golang的mysql库采用的是驱动模型Go官方提供了database/sql包来给用户进行和数据库打交道的工作,database/sql库实际只提供了一套操作数据库的接口和规范,例如抽象好的SQL预处理(prepare),连接池管理,数据绑定,事务,错误处理等等。官方并没有提供具体某种数据库实现的协议支持。和具体的数据库,例如MySQL打交道,还需要再引入MySQL的驱动...

2019-08-28 21:26:54 743 1

原创 以太坊的共识算法解读

TechNeo 技术沙龙第20期有幸参加 51cto这次组织的技术分享,当时接到消息的时候只有两天了, ppt做的比较仓促TechN目录在这里:PPT 放在 这里了:  https://download.csdn.net/download/liangzhiyang/10368696好像博客没有上传 附件的功能,只能放到 这里了,吐槽一下这个里面有分享的视频:http://mdsa.51cto.co...

2018-04-23 16:59:36 963

原创 各编程语言的值语义和引用语义的区别详解(golang,c++,php,solidity)

最近在使用 solidity(以太坊ethereum的智能合约的语言)的语言的时候,发现一些问题,只要是solidity语言中array和struct类型在storage和memory情况下的引用语义的理解问题另外对于不同语言的引用语义的理解其实是不一样的,这一点对于新人来说就比较坑~对于值语义,各个语言没有差别的,这个很好理解但是对于引用语义,这里以c++和php中的引用类型中的...

2018-03-12 20:55:05 796

原创 go-ethereum源码分析-miner-挖矿

源码包路径:github.com/ethereum/go-ethereum/minerA。 Miner.New 创建一个miner对象需要启动挖矿cpuagent监听事件(订阅sync新块的start,done,failed三个事件)(要注意防止别人dos攻击)一次性的啊start事件:先关闭miner,记住此时挖矿的标记done或者failed事件:根据标记启动miner;取消事件订阅(接下来的...

2018-03-02 15:42:31 1333

原创 go-ethereum源码分析-consensus - 共识

源码包路径:github.com/ethereum/go-ethereum/consensus/共识算法引擎接口的定义如下type Engine interface { // Author retrieves the Ethereum address of the account that minted the given // block, which may be different ...

2018-03-02 15:40:32 1066

原创 轻松筹1.6亿注册用户的Passport账户系统架构

轻松筹是全国1.6亿人使用的全民众筹平台,几乎所有核心业务都依赖于账号系统,账号系统的用户体验,安全性,稳定性直接影响着轻松筹所有业务的运行;轻松筹的发展非常迅速,已经展开了多条产品线,单点登录的需求愈加强烈;另外由于历史包袱的原因,也遗留了一些问题亟待解决。本次交流主要与大家分享一下轻松筹账号系统(侧重登录授权服务)的架构设计和改造方案。历史背景:由于历史包袱的遗留问题,轻松筹的账号...

2017-09-08 15:19:17 3239

原创 mysql技术内幕innodb存储引擎-学习记录

mysql技术内幕innodb存储引擎 本书面向那些使用MySQL InnoDB存储引擎作为数据库后端开发应用程序的开发者和有一定经验的MySQL DBA。这本书真的可以反复阅读揣摩的(边看边实操),这几年自己反复看了好多遍了,每次看都有新的理解,新的收获(O(∩∩)O哈哈~因为一次性阅读一遍很难理解的那么多,那么透彻~~人的脑力一段时间内是有限的啊,(*^_^*) 嘻嘻……) 下载地址:h

2017-03-28 15:46:46 847

原创 关于golang的context.WithTimeout的cancel的说明

简介context是一个在go中时常用到的程序包,google官方开发。特别常见的一个应用场景是由一个请求衍生出的各个goroutine之间需要满足一定的约束关系,以实现一些诸如有效期,中止routine树,传递请求全局变量之类的功能。使用context实现上下文功能约定需要在你的方法的传入参数的第一个传入一个context.Context类型的变量。 比如:上层需要指定超时的情况: ctx,

2017-03-24 17:25:40 12960

转载 tcp/ip协议原理

作服务端开发的,tcp/ip等等都还是需要理解其原理和机制的转载几个~~TCP/IP原理浅析TCP 的那些事儿理解TCP序列号(Sequence Number)和确认号(Acknowledgment Number)

2017-03-17 17:17:23 964

原创 grpc的invoke(一次请求)正常执行流程

请先阅读 grpc的dial正常执行流程和 grpc服务异常情况的执行流程默认配置情况下(还有其它没有提到的配置都取默认值):设置了balancer(etcd等)没有设置WithBlock,即dialOptions.block = false没有设置FailOnNonTempDialError,即dialOptions.copts.FailOnNonTempDialError =

2017-03-15 17:09:21 6157

原创 grpc服务异常情况的执行流程

请先阅读 grpc的dial正常执行流程 默认配置情况下(还有其它没有提到的配置都取默认值):设置了balancer(etcd等)没有设置WithBlock,即dialOptions.block = false没有设置FailOnNonTempDialError,即dialOptions.copts.FailOnNonTempDialError = false

2017-03-13 17:07:03 5162

原创 grpc的dial正常执行流程

请先阅读  grpc源码注解(golang)以下基于默认配置情况下(还有其它没有提到的配置都取默认值):设置了balancer(etcd等)没有设置WithBlock,即dialOptions.block = false没有设置FailOnNonTempDialError,即dialOptions.copts.FailOnNonTempDialError = falsegr

2017-03-13 17:04:32 7258

原创 grpc源码注解(golang)

grpc源码注解(通过阅读源码的一些理解)最近在看grpc的源码(基于golang),为了方便自己阅读以及理解,增加了一些注解。这里分享出来,希望对大家有些帮助,也是督促自己啦地址: https://github.com/liangzhiyang/annotate-grpc-go目前client端基本流程都ok了(还有server端等等)会持续更新~~接

2017-03-09 16:47:33 4871 2

原创 golang的垃圾回收(GC)机制

请先阅读 golang的goroutine调度机制然后再到这里 golang的垃圾回收采用的是 标记-清理(Mark-and-Sweep) 算法就是先标记出需要回收的内存对象快,然后在清理掉;在这里不介绍标记和清理的具体策略,只介绍 GC过程是怎么调度的以及stw相关这个算法,会导致 stw (stop the world)的问题,中断用户逻辑触发GC机制1.

2016-09-26 14:35:52 16233

原创 golang的goroutine调度机制

一直对goroutine的调度机制很好奇,最近在看雨痕的golang源码分析,感觉豁然开朗,受益匪浅;去繁就简,再加上自己的一些理解,整理了一下~~调度器主要基于三个基本对象上,G,M,P(定义在源码的src/runtime/runtime.h文件中)1.     G代表一个goroutine对象,每次go调用的时候,都会创建一个G对象2.     M代表一个线程,

2016-09-26 14:28:08 19767 17

以太坊的共识算法解读

TechNeo 技术沙龙第20期 以太坊的共识算法解读,主要针对POW和POA详解

2018-04-23

openGL函数库VC++

openGL 函数库,新手必备,好东西大家分享

2009-11-30

空空如也

空空如也
提示
确定要删除当前文章?
取消 删除