
Architecture
文章平均质量分 91
yeasy
Make the world better!
展开
-
设计不会崩溃的健康码系统
本文试图通过利用现代信息科技,逐步设计一个低成本(日均成本 1 块钱),且不会崩溃的健康码服务系统。原创 2022-04-02 08:29:47 · 3540 阅读 · 0 评论 -
2019 阅读书目
前段时间有出版社老师问起新年读书计划。回首这一年,最大遗憾就是读得书太少,很多只粗略看了个开头。计划新的一年利用差旅中时间,认真读完几本好书。《论法的精神》牛顿的《自然哲学的数学原理》揭露了物理世界的根本规律,而孟德斯鸠这本巨著,堪称探讨了社会科学的基本规律。这本书影响颇为深远。华夏历史典籍中唯有《韩非子》异曲同工,然而成书太早,思想深度无法相提并论。《设计原本》如果你...原创 2018-12-31 10:56:40 · 3053 阅读 · 0 评论 -
Hyperledger Fabric 排序服务核心原理和工作过程
Hyperledger 源码分析之 Fabric排序服务在超级账本 Fabric 网络中起到十分核心的作用。所有交易在发送给 Committer 进行验证接受之前,需要先经过排序服务进行全局排序。在目前架构中,排序服务的功能被抽取出来,作为单独的 fabric-orderer 模块来实现,代码主要在 fabric/orderer 目录下。下面以 Kafka 作为共识插件为例原创 2017-12-14 08:00:39 · 5777 阅读 · 1 评论 -
Hyperledger Fabric 排序节点启动过程
Orderer 节点启动通过 orderer 包下的 main() 方法实现,会进一步调用到 orderer/common/server 包中的 Main() 方法。核心代码如下所示。// Main is the entry point of orderer processfunc Main() { fullCmd := kingpin.MustParse(app.Parse(原创 2017-10-20 19:24:59 · 3418 阅读 · 2 评论 -
Hyperledger Fabric 排序节点处理 Deliver 请求的过程
Deliver,意味着客户端通过 gRPC 接口从 Ordering 服务获取数据(例如指定区块的数据)。Orderer 节点收到请求消息,会首先交给 orderer.common.server 包中 server 结构体的 Deliver(srv ab.AtomicBroadcast_DeliverServer) error 方法处理。该方法进一步调用 orderer.common.原创 2017-10-20 19:22:20 · 3722 阅读 · 0 评论 -
Hyperledger Fabric 链码启动过程实现
注:本文最早发表于 2017-09-22.简介这里讲的 Chaincode 是用户链码(User Chaincode,UCC),对应用开发者来说十分重要,它提供了基于区块链分布式账本的状态处理逻辑,基于它可以开发出多种复杂的应用。Hyperledger Fabric 中,Chaincode 默认运行在 Docker 容器中。Peer 通过调用 Docker原创 2017-10-20 18:10:21 · 3377 阅读 · 0 评论 -
Hyperledger Fabric 排序节点处理 Broadcast 请求的实现
Broadcast,意味着客户端将请求消息(例如完成背书后的交易)通过 gRPC 接口发送给 Ordering 服务。这些请求消息,会交给 orderer.common.server 包中 server 结构体的 Broadcast(srv ab.AtomicBroadcast_BroadcastServer) error 方法处理。该方法主要会调用到 orderer.common.b原创 2017-10-20 18:12:20 · 2532 阅读 · 1 评论 -
集群负载均衡技术概述
集群负载均衡技术(Load Balancing)是目前互联网后端服务的关键技术,是互联网系统演化到现在这样巨大规模的基础。客观地说,负载均衡是一个门槛相当不低的领域,已有技术主要包括硬件方案和软件方案。简单说,硬件方案性能好,但是昂贵;软件方案性能差,但是成本相对可控。硬件方案代表为F5、Ctrix、A10、Redware 等 LB 厂商的产品,每年市场营收额高达百亿。开源原创 2015-12-27 18:58:21 · 2032 阅读 · 0 评论 -
云计算时代应用设计十二要素
云计算时代,设计和应用软件应用应该注意哪些因素?Docker 为什么最近这么火?Heroku平台提出了推荐的应用风格,对我们设计PaaS和SaaS应用都有很好的参考意义。代码一个代码库,使用版本管理,形成多个部署。依赖显式定义,隔离不同依赖。配置在环境变量中保存配置。后端服务后端服务作为可挂载资源使用。生命周期翻译 2014-10-25 22:13:50 · 2526 阅读 · 0 评论 -
用 consul + consul-template + registrator + nginx 打造真正可动态扩展的服务架构
在互联网应用领域,服务的动态性需求十分常见,这就对服务的自动发现和可动态扩展提出了很高的要求。Docker 的出现,以及微服务架构的兴起,让众多开源项目开始关注在松耦合的架构前提下,如何基于 Docker 实现一套真正可动态扩展的服务架构。基本需求基本的需求包括:服务启动后要能自动被发现(vs 传统需要手动进行注册);负载要能动态在可用的服务实例上进行均衡(vs 传原创 2015-08-18 11:42:02 · 12543 阅读 · 1 评论 -
Mesos 基本原理与架构
首先,Mesos 是一个资源调度框架,并非一整套完整的应用管理平台,本身是不能干活的。但是它可以比较容易的跟各种应用管理或者中间件平台整合,一起工作,提高资源使用效率。架构 master-slave 架构,master 使用 zookeeper 来做 HA。master 单独运行在管理节点上,slave 运行在各个计算任务节点上。各种具体任务的管理平台,即原创 2015-06-23 19:06:49 · 6592 阅读 · 0 评论 -
网络技术正当革命时
计算机网络自诞生之后,面向的应用场景主要包括局域网、广域网两大类。在各种环境中,通过层级结构将局域网连接起来,形成一个网络的网络,即所谓的互联网。无论什么网络,唯一的事实标准就是 TCP/IP 协议栈以及围绕这个协议栈的各种管理和应用技术,即便后来推出的 IPv6、CCN、SDN 等网络技术,都没有完全超出这个范畴。所以,看起来基于 TCP/IP 的修修补补在相当长的一段时间里满足了各种场景下对于原创 2015-01-13 23:11:47 · 1396 阅读 · 0 评论 -
C10K 问题引发的技术变革
C10K 问题服务器同时支持并发 10K 量级的连接,这些连接可能是保持存活状态的。解决这一问题,思路主要有两个方面,一个是对于每个连接处理分配一个独立的进程/线程;另一个思路是用同一进程/线程来同时处理若干连接。每个进程/线程处理一个连接这一思路最为直接。但是由于申请进程/线程会占用相当可观的系统资源,同时对于多进程/线程的管理会对系统造成压力,因此这种方案不具备原创 2015-01-26 14:30:34 · 14880 阅读 · 3 评论 -
IO模式——同步(阻塞、非阻塞)、异步
不少人把同步、异步、阻塞、非阻塞放到一起讨论,很多时候难以区分。这里从根上剖析下该怎么看待这几个概念。首先,异步和同步是相对的,而同步情况下又有阻塞和非阻塞之分。异步很容易理解。当用户程序需要进行IO的时候,发出IO请求,然后就立刻返回,可以继续做其它事情。例如,从网络收包,当包抵达后放到内核某个缓存区,并且从内核空间放置到程序需要的用户空间后(一种是直接复原创 2014-10-10 21:54:16 · 1503 阅读 · 0 评论 -
也谈并发和并行
并发(concurrency)和并行(parallelism)都是常见的概念,并且很多时候并不容易进行区分,甚至被用作表达同样的概念。网上最流行的解释,并发是一个人吃三个馒头;并行是三个人吃三个馒头。这样理解简单概况了主要区别,但其实并不是太完整。从对象的角度,并发是一种任务分配模式,指的是同一个处理器被调度处理不同的任务,这些任务往往都是同一性质的任务。例如浏览器打开多个页面原创 2014-10-09 15:01:21 · 1409 阅读 · 0 评论