04 2021 档案

Raft协议集群选主投票算法详解
摘要:在之前的文章中,我们说过,raft节点会在各自的状态里面不断的轮询,监听RPC请求事件。 下面我看下这个方法. hashicorp/raft.go Rpc请求处理 // processRPC is called to handle an incoming RPC request. This must 阅读全文

posted @ 2021-04-30 23:10 萌兰三太子 阅读(591) 评论(0) 推荐(0)

分布式一致性协议之Raft的实现详解
摘要:到目前为止,不管是哪门语言,应该都已经有一些raft协议的实现了。但是大家的实现也都是根据raft协议论文来的,根据自己的服务形态在细节上有一些差异而已,大体上是一样的,因此今天这里就以golang语言中的raft实现库为例,进行剖析,让大家实际感受下raft的流程。 hashicorp/raft 阅读全文

posted @ 2021-04-30 23:08 萌兰三太子 阅读(498) 评论(0) 推荐(0)

Gossip协议及Consul中的实现
摘要:gossip 协议(gossip protocol)又称 epidemic 协议(epidemic protocol),是基于流行病传播方式的节点或者进程之间信息交换的协议,在分布式系统中被广泛使用,比如我们可以使用 gossip 协议来确保网络中所有节点的数据一样。 gossip 协议利用一种随机 阅读全文

posted @ 2021-04-30 23:07 萌兰三太子 阅读(655) 评论(0) 推荐(0)

真实集群环境的nginx和keepalived搭建实录
摘要:安装nginx 因为nginx只有源码包,因此需要我们自己编译安装,另外它依赖一些其他软件,如下所示: [root@qsy22 nginx_pkg]# ll -rw . 1 root root 6209464 Oct 24 12:19 cpp-4.8.5-4.h1.x86_64.rpm -rw . 阅读全文

posted @ 2021-04-30 23:06 萌兰三太子 阅读(304) 评论(0) 推荐(0)

Zookeeper选举机制
摘要:前言 ZooKeeper服务器会在本地处理只读请求(exists、getData和getChildren)。假如一个服务器接收到客户端的getData请求,服务器读取该状态信息,并将这些信息返回给客户端。因为服务器会在本地处理请求,所以ZooKeeper在处理以只读请求为主要负载时,性能会很高。我们 阅读全文

posted @ 2021-04-30 23:05 萌兰三太子 阅读(217) 评论(0) 推荐(0)

Rabbitmq技术内幕
摘要:Rabbitmq大体上可以分为两部分(Exchange和MQ),所有发送给RabbitMQ的消息都会先交给Exchange, Exchange的功能类似于路由器,它会根据自身类型(fanout、direct、topic)以及binding信息决定一个消息该被放到哪一个MQ, 而MQ的功能在于暂时存储 阅读全文

posted @ 2021-04-30 23:04 萌兰三太子 阅读(148) 评论(0) 推荐(0)

使用Keepalived实现HAProxy高可用
摘要:尽管HAProxy非常稳定,但仍然无法规避操作系统故障、主机硬件故障、网络故障甚至断电带来的风险。所以必须对HAProxy实施高可用方案。 下面将介绍利用Keepalived实现的HAProxy热备方案。即两台主机上的两个HAProxy实例同时在线,其中权重较高的实例为MASTER,MASTER出现 阅读全文

posted @ 2021-04-30 23:03 萌兰三太子 阅读(517) 评论(0) 推荐(0)

SpringCloudRibbon负载均衡实现原理
摘要:在SpringCloud中,我们最常使用到的负载均衡库就是ribbon。 使用方式,一般是通过自动配置类注入,然后在类中定义负载均衡实例bean @Configuration public class RestTemplateConfig { @Value("${ssl.protocol:TLSv1 阅读全文

posted @ 2021-04-30 23:02 萌兰三太子 阅读(292) 评论(0) 推荐(0)

pringCloudFeign原理剖析
摘要:Feign是什么? 简单来说,feign是用在微服务中,各个微服务间的调用。它是通过声明式的方式来定义接口,而不用实现接口。接口的实现由它通过spring bean的动态注册来实现的。 feign让服务间的调用变得简单,不用各个服务去处理http client相关的逻辑。并且它里面集成了ribbon 阅读全文

posted @ 2021-04-30 23:00 萌兰三太子 阅读(75) 评论(0) 推荐(0)

关于Spring体系的各种启动流程
摘要:在介绍spring的启动之前,先来说下启动过程中使用到的几个类 基本组件 1、BeanFactory:spring底层容器,定义了最基本的容器功能,注意区分FactoryBean 2、ApplicationContext:扩展于BeanFactory,拥有更丰富的功能。例如:添加事件发布机制、父子级 阅读全文

posted @ 2021-04-30 22:59 萌兰三太子 阅读(647) 评论(0) 推荐(0)

你真的了解Java中的线程池吗
摘要:Java中的线程池,相信大家都接触过或者使用过,它里面到底是怎么运作的,不知道大家有没有去实际了解过?这篇文章将带领大家去看看它内部结构和实现原理。 继承关系 public class ThreadPoolExecutor extends AbstractExecutorService {} pub 阅读全文

posted @ 2021-04-30 22:58 萌兰三太子 阅读(107) 评论(0) 推荐(0)

探索eventlet通信机制
摘要:一、源码解析 对python原生文件打补丁: import eventlet eventlet.monkey_patch() 跟踪进入该模块方法:eventlet.patcher#monkey_patch def monkey_patch(**on): ...... modules_to_patch 阅读全文

posted @ 2021-04-30 22:57 萌兰三太子 阅读(277) 评论(0) 推荐(0)

详解wsgi的http请求过程
摘要:一、概述 wsgi服务启动并监听http请求的流程: 1.利用paste.deploy模块的loadapp函数加载指定服务(如proxy)的配置文件,获取到用户的application,即业务程序 2.调用wsgi.server,其中wsgi.server会绑定IP和端口,监听来自客户端的消息。并由 阅读全文

posted @ 2021-04-30 22:56 萌兰三太子 阅读(362) 评论(0) 推荐(0)

Python中的闭包原理
摘要:普通函数作用域 def outer(): outer_var = "i am is a outer var." def inner(): inner_var = "i am is a inner var." print(outer_var) print(inner_var) if __name__ 阅读全文

posted @ 2021-04-30 22:48 萌兰三太子 阅读(256) 评论(0) 推荐(0)

Python中的GIL机制详解
摘要:大家应该都知道,python有一个GIL(全局解释器锁),用于控制多线程的并发行为。 注:GIL不是必须的,可以通过对每个资源单独加锁的方式去掉GIL,也就是将GIL换成更细粒度的锁。 GIL锁的实现 Linux上的POSIX线程的实现有如下行为: 1、同一个线程多次调用pthread_mutex_ 阅读全文

posted @ 2021-04-30 22:47 萌兰三太子 阅读(668) 评论(0) 推荐(0)

使用 C 或 C++ 扩展 Python
摘要:如果你会用 C,添加新的 Python 内置模块会很简单。以下两件不能用 Python 直接做的事,可以通过 extension modules 来实现:实现新的内置对象类型;调用 C 的库函数和系统调用。 为了支持扩展,Python API(应用程序编程接口)定义了一系列函数、宏和变量,可以访问 阅读全文

posted @ 2021-04-30 22:46 萌兰三太子 阅读(258) 评论(0) 推荐(0)

Keystonemiddleware原理
摘要:三方库:keystonemiddleware 入口:auth_token/init.py#filter_factory()方法 通过之前的wsgi知识可以知道,消息在中间件中传递的时候是调用的中间件的call方法; 这里是调用了父类BaseAuthProtocol的call方法,然后调用到AuthP 阅读全文

posted @ 2021-04-30 22:44 萌兰三太子 阅读(326) 评论(0) 推荐(0)

Openstack中的路由
摘要:一、服务的加载及初始化 osapi-karbor 服务启动的过程中,调用 deploy.loadpp 使用 config 方式从 api-paste.ini 文件来 load 名为osapi_karbor 的应用,其入口在文件的 **[composite:osapi_karbor]**部分: [co 阅读全文

posted @ 2021-04-30 22:43 萌兰三太子 阅读(297) 评论(0) 推荐(0)

Openstack服务的启动
摘要:基本所有的openstack服务都依赖 evenlet 完成各种并发任务,它的进程可分为两类: 1、 WSGIService: 接收和处理 http 请求,依赖eventlet.wsgi 的 wsgi server 处理 http 请求,比如nova-api 2、 Service: 接收和处理 rp 阅读全文

posted @ 2021-04-30 22:39 萌兰三太子 阅读(874) 评论(0) 推荐(0)

注解Configuration、EnableAutoConfiguration、ComponentScan和Component
摘要:@ComponentScan VS @EnableAutoConfiguration 相同点: 两者都可以将带有@Component,@Service等注解的对象加入到ioc容器中。 不同点: 1.两者虽然都能将带有注解的对象放入ioc容器中,但是它们扫描的范围是不一样的。@ComponentSca 阅读全文

posted @ 2021-04-28 14:00 萌兰三太子 阅读(109) 评论(0) 推荐(0)

透过Spring自动配置原理看Spring的扩展点
摘要:EnableAutoConfiguration注解 spring的自动配置就是得益于这个EnableAutoConfiguration注解: @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Inhe 阅读全文

posted @ 2021-04-23 20:10 萌兰三太子 阅读(35) 评论(0) 推荐(0)

基于Feign的扩展机制实现TLS通信
摘要:改造spring应用为tls模式 我们在使用springboot运行一个应用的时候,默认是http模式的,但是在生产环境中,一般都要求是https模式 具体做法如下: 1、生成证书(这里只是示例,生产环境需要严格通过CA签发) keytool -genkeypair -alias ts_https 阅读全文

posted @ 2021-04-11 20:02 萌兰三太子 阅读(57) 评论(0) 推荐(0)

导航