Go 必须知道的 18 个Go开发库
Go 常用的包推荐 (持续更新)
g++ -Wall 不会提示 narrow-cast 的警告
Eureka 服务注册与发现-原理分析
1 Preface
Eureka 是Netflix开发的服务发现框架,本身是一个基于REST的服务。
SpringCloud将它集成在其子项目spring-cloud-netflix中,以实现SpringCloud的服务注册与发现功能。
在 Spring 全家桶中, Eureka 是一个微服务注册中心,主要提供服务的注册与发现,另一个功能就是服务配置获取。
2 Eureka 核心概念
Eureka 作为 Spring Cloud 体系中核心、默认的注册中心组件,研究它的运行机制,有助于我们在工作中更好地使用它。
下图: 服务注册+调用示意图, 服务提供者和服务的消费者,本质上也是 Eureka Client 角色。
整体上可以分为两个主体:Eureka Server
和 Eureka Client
。
Git 项目仓库中的 OWNERS 文件
Seastar 之 ready_future(3)
1 什么是 ready_future
如果一个 future 在当下就已经有结果了,不必等到未来某个时刻,
我们把这个 future 称为 ready_future
。
ready_future 的不同之处在于:
……(1) ready_future 可以单独使用,不必关联一个promise;
(2) ready_future.then(lambda) 会把传入的lambda立即执行掉, 也就是说这个lambda没有机会放入任务队列;
(3) 而not_ready_future每次执行,产生的新任务都会被放入任务队列,然后依此取出来执行。
CPU Cache 架构
Seastar 之核间通信 (2)
1 0核和任一个核通信
Seastar 使用 eventfd 进行核间(线程间)通信,因为每个线程使用内核API sched_set_affinity()
,绑定一个 SMP 的 core,所以我们这里称之为核间通信。
Seastar 创建了一个 N*N 的 event_fd 矩阵,每个单元格上两个event_fd,每一行event_fds由一个线程(Core)管理。
也就是说每个线程的 epoll 上,一共需要侦听 2N 个 event_fd。
示意图如下:
……多模匹配之AC自动机
1 Preface
Aho-Corasick automation,该算法在1975年产生于贝尔实验室,是著名的多模匹配算法。
AC自动机算法分为3步:(1)构造一棵Trie树,(2)构造Fail指针, (3) 模式匹配过程。
……