极品架构
文章平均质量分 74
蓝虎 - tanjp.com
Seeking a way to achieve my childhood dream! Concentration? Innovation? Solidarity? Goodness?
Design Simple, Graceful, High Efficiency and Excellence Code. http://www.tanjp.com
展开
-
谈极品技术 tanjp.com 文章汇总
谈极品技术 tanjp.com这是一个极品的时代,让我们一起谈谈极品时代下的各种信息技术!探索各种服务端技术,如 游戏服务端,分布式架构,微服务,大数据采集分析,运维管理和监控,高并发高可用,数据一致性,等等……游戏服务端架构2020-04-24_分区分服与大规模跨服功能2020-04-26_百万用户在线的游戏架构承载能力分析编程内外功修炼C++11内存序me...原创 2020-04-27 11:20:16 · 192 阅读 · 0 评论 -
定时器实现过程遇到的问题
原文转自:http://www.tanjp.com/archives/203(即时修正和更新)定时器实现过程遇到的问题在服务端的程序里,时间是一个很常用,几乎无处不在的变量。如果不正确使用时间,将会导致灾难性的数据错误。所以,正确使用时间非常重要!怎样才算是正确使用时间?首先,我们得知道在程序世界里面,时间有哪些值?1、协调世界时,又称世界统一时间,世界标准时间,国际协...原创 2019-05-28 20:41:52 · 901 阅读 · 0 评论 -
时间轮(Timing Wheel)算法-高性能定时器策略笔记
原文转自:http://www.tanjp.com/archives/199(即时修正和更新)什么时候需要定时器?我们都知道程序是能快速运算出结果,几乎在一瞬间就可以把结果算出来。但是这个前提是所有输入条件都拿到手的情况下,如果有些输入条件 A 你并不知道什么时候能符合,那怎么办?写一个whlie循环一直检查?这样无疑很浪费CPU,显然行不通。有经验程序员可以已经想到办法,把这...原创 2019-05-17 20:58:28 · 4063 阅读 · 0 评论 -
Actor模式封装MongoDB C驱动-多连接并发与自动重试
原文转自:http://www.tanjp.com/archives/192(即时修正和更新)Actor模式封装异步的MongoDB C驱动MongoDB C驱动(MongoDB C Driver http://mongoc.org/),提供了同步的DB访问存储接口,在高并发的业务系统,同步操作会阻塞业务逻辑,是高并发的一大障碍。所以需要设计异步的接口来满足业务系统的需求。利用...原创 2019-05-17 01:05:07 · 280 阅读 · 0 评论 -
双缓冲安全队列(DoubleCacheQueue)与自旋锁(SpinMutex)
原文转自:http://www.tanjp.com/archives/144(即时修正和更新)双缓冲安全队列(DoubleCacheQueue)双缓冲区,故名思义就是要有两个缓冲区(简称A和B)。这两缓冲区,总是一个用于生产者,另一个用于消费者。当缓冲区触发某个条件时,进行一次切换(先前被生产者写入的转为消费者取出,先前消费者取出的转为生产者写入)。而这个触发的条件,一般是以快速消...原创 2019-05-07 15:51:14 · 1208 阅读 · 0 评论 -
窃取式调度器(Stealing Scheduler)-高并发
原文转自:http://www.tanjp.com/archives/141(即时修正和更新)窃取式调度器(Stealing Scheduler)N个业务系统生产作业加入到 M+1个队列里面(优先加入到当前线程所在队列),队列中的作业被 M个线程按一定的规则消费。M个线程都对应一个线程局部存储的队列,和一个公共的队列。该规则按以下次序执行:1、优先处理本线程生产的作业。2、...原创 2019-05-07 15:46:42 · 594 阅读 · 0 评论 -
分配式调度器(Allocation Scheduler)-有锁与无锁实现
原文转自:http://www.tanjp.com/archives/139(即时修正和更新)分配式调度器(Allocation Scheduler)N个业务系统生产作业加入到 1个分配队列里面,由 1个分配线程负责将队列中作业分配给 M个工作队列,每个工作队列对应 1个工作线程来消费作业。对分配队列的抢占为:N*1,对工作队列的抢占为1*1,也就是说总体队列的抢占为 N*1+1*1*M...原创 2019-05-07 15:41:21 · 283 阅读 · 0 评论 -
抢占式调度器(Preemptive Scheduler)-有锁与无锁实现
原文转自:http://www.tanjp.com/archives/137(即时修正和更新)抢占式调度器(Preemptive Scheduler)N个业务系统生产作业加入到一个队列里面,队列中的作业被 M个线程抢先消费。也就是说,N的业务系统抢着把生产出来的作业插入到队列,同时 M个线程抢着消费该队列的作业,对队列的抢占非常激烈。可简单竞争抽象为: N*M。 ...原创 2019-05-07 15:34:21 · 1339 阅读 · 0 评论 -
Actor模式实现高并发的异步文件日志系统(Actor Log)
原文转自:http://www.tanjp.com/archives/176(即时修正和更新)文件日志异步读写我们都知道普通的读写文件打开文件都是同步的,比如C的fopen, fclose, fread等。并且磁盘的访问速度远远的低于内存,所以操作系统要阻塞等待磁盘设备准备好才进行读写。如果采用同步,那么上次业务逻辑将会阻塞挂起,等待磁盘把数据准备好,再通知操作系统上报到应用层。高...原创 2019-05-09 23:23:43 · 479 阅读 · 0 评论 -
Actor模式之高性能并发框架的实现
原文转自:http://www.tanjp.com/archives/149(即时修正和更新)概念Actor模式是一种并发模型,其目标是充分利用计算机多核的优势,把一个大问题分拆成多个小问题并发处理,或者把多个平行的问题并发处理。一个Actor指的是一个最基本的计算单元。它能接收一个消息并且基于其执行计算。Actor一大重要特征在于Actor之间相互隔离,它们并不互相共享内存。也就是说,...原创 2019-05-08 23:02:41 · 2092 阅读 · 1 评论 -
Actor模式之高性能并发框架的构想
原文转自: http://www.tanjp.com/archives/106(即时修正和更新)Actor模式之高性能并发框架的构想最近接触到了Actor模型,以及了解云风的skynet框架,想重新实现一套高并发的框架。想想做游戏也七八年了,接触过一些不同的游戏框架。有的使用多线程并发,但是业务逻辑各种加锁,导致项目后期维护成本不敢想像的大。后来,主流的方向对采用单线程做主业...原创 2017-05-19 02:17:30 · 1155 阅读 · 0 评论 -
面向对象设计原则
原文转载:http://www.tanjp.com/archives/66(即时修正和更新)所谓“好的面向对象设计”是那些可以满足“应对变化,提高复用”的设计。对象是什么?>>从概念层面讲,对象是拥有某种责任的抽象。>>从规格层面讲,对象是一系列可以被其他对象使用的公共接口。>>从语言实现层面来看,对象封装了代码和数据。怎样才能设...原创 2017-03-28 17:22:05 · 286 阅读 · 0 评论