
架构
编程小问号
这个作者很懒,什么都没留下…
展开
-
并发语言
多核处理器越来越普及,那有没有一种简单的办法,能够让我们写的软件释放多核的威力?答案是:Yes。随着Golang, Erlang, Scale等为并发设计的程序语言的兴起,新的并发模式逐渐清晰。正如过程式编程和面向对象一样,一个好的编程模式需要有一个极其简洁的内核,还有在此之 上丰富的外延,可以解决现实世界中各种各样的问题。本文以GO语言为例,解释其中内核、外延。 并发模式之内核转载 2014-07-16 16:42:17 · 648 阅读 · 0 评论 -
分布式系统的事务处理
当我们在生产线上用一台服务器来提供数据服务的时候,我会遇到如下的两个问题:1)一台服务器的性能不足以提供足够的能力服务于所有的网络请求。2)我们总是害怕我们的这台服务器停机,造成服务不可用或是数据丢失。于是我们不得不对我们的服务器进行扩展,加入更多的机器来分担性能上的问题,以及来解决单点故障问题。 通常,我们会通过两种手段来扩展我们的数据服务:1)数据分区:就是把数转载 2015-08-11 14:03:27 · 558 阅读 · 0 评论 -
研发中间件介绍-异步消息可靠推送Notify
电商系统为什么需要 NotifyServer? 如子柳所说,电商系统『需要两种中间件系统,一种是实时调用的中间件(淘宝的HSF,高性能服务框架)、一种是异步消息通知的中间件(淘宝的Notify)』。那么用传统的 ActiveMQ/RabbitMQ 来实现 异步消息发布和订阅 不行吗? 2013年之前我们确实用的是 ActiveMQ,当然主要是订阅者 Pull 模式,选转载 2015-07-29 15:39:40 · 618 阅读 · 0 评论 -
服务器负载均衡算法
3.1 服务器负载均衡算法BIG-IP是一台对流量和内容进行管理分配的设备。它提供10种灵活的算法将数据流有效地转发到它所连接的服务器群。而面对用户,只是一台虚拟服务器。用户此时只须记住一台服务器,即虚拟服务器。但他们的数据流却被BIG-IP灵活地均衡到所有的服务器。这10种算法包括:轮询(Round Robin):顺序循环将请求一次顺序循环地连接每个服务器。当其中某个服务器发生第转载 2015-07-30 13:59:15 · 1274 阅读 · 0 评论 -
nginx后端应用服务器有大量的tcp连接处于time_wait
今天发现weblogic上有大量的连接处于time_wait状态,感觉很奇怪。据说是nginx照成的,用tcpdump研究下。在nginx的服务器上执行tcpdump -i bond0 -nnA src host 134.96.129.36 and dst host 134.96.129.71 | grep -30 134.96.111.86可以看到nginx在把请求转转载 2015-07-30 17:30:14 · 3585 阅读 · 0 评论 -
EQueue - 一个C#写的开源分布式消息队列的总体介绍
本文想介绍一下前段时间在写enode时,顺便实现的一个分布式消息队列equeue。这个消息队列的思想不是我想出来的,而是通过学习阿里的rocketmq后,自己用c#实现了一个轻量级的简单版本。一方面可以通过写这个队列让自己更深入的掌握消息队列的一些常见问题;另一方面也可以用来和enode集成,为enode中的command和domain event的消息传递提供支持。目前在.net平台,比较好转载 2015-08-03 11:56:05 · 1170 阅读 · 0 评论 -
EQueue - 详细谈一下消息持久化以及消息堆积的设计
之前写了一篇文章,总体介绍了EQueue。在看这篇文章之前如果还没看过那篇文章,可能会看不懂这篇文章。所以建议没看过的朋友务必先看一下那篇文章中所提到的各种概念,这样才能更好的理解本文所说的内容。说实话我当初写EQueue也是抱着一种玩的态度的,就是想尝试写一个分布式消息队列,用来为ENode提供分布式消息通信的能力。后来写着写着,发现越来越好玩,因为觉得这个队列以后应该会很实用,所以就花了更多的转载 2015-08-03 11:57:02 · 769 阅读 · 0 评论 -
EQueue - 一个纯C#写的分布式消息队列介绍2
一年前,当我第一次开发完EQueue后,写过一篇文章介绍了其整体架构,做这个框架的背景,以及架构中的所有基本概念。通过那篇文章,大家可以对EQueue有一个基本的了解。经过了1年多的完善,EQueue无论是功能上还是成熟性上都完善了不少。所以,希望再写一篇文章,介绍一下EQueue的整体架构和关键特性。EQueue架构EQueue是一个分布式的、轻量级、高性能、具有一定可靠转载 2015-08-03 12:04:15 · 717 阅读 · 0 评论 -
DDD实践问题之 - 关于论坛的帖子回复统计信息的更新的思考
之前,在用ENode开发forum案例时,遇到了关于如何实现论坛帖子的回复的统计信息如何更新的问题。后来找到了自己认为比较合理的解决方案,分享给大家。也希望能和大家交流,擦出更多的火花。论坛核心领域问题分析论坛领域的核心概念是:帖子、回复。大家都知道,一个帖子可以有零个或多个回复。对同一个帖子,不同的人可以并行发表回复。回复发表后,查看帖子详情时,可以根据回复的发表时间排序显示;此转载 2015-08-03 12:24:22 · 531 阅读 · 0 评论 -
IM系统架构设计之浅见
标签:IM 架构原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://yaocoder.blog.51cto.com/2668309/1412029背景:除去大名鼎鼎的QQ这款即时聊天工具,还有许多细分行业的IM,比如淘宝阿里旺旺、网易泡泡、YY语音......。恰巧公司产品也要开发一款基于我们自己行业的类IM系统转载 2015-08-04 09:46:23 · 426 阅读 · 0 评论 -
ucontext-人人都可以实现的简单协程库
1.干货写在前面协程是一种用户态的轻量级线程。本篇主要研究协程的C/C++的实现。首先我们可以看看有哪些语言已经具备协程语义:比较重量级的有C#、erlang、golang*轻量级有python、lua、javascript、ruby还有函数式的scala、scheme等。c/c++不直接支持协程语义,但有不少开源的协程库,如:Protothreads:一个“蝇量级转载 2015-08-05 13:26:35 · 524 阅读 · 0 评论 -
[转]构建C协程之ucontext篇
原理简介所谓 “ucontext” 机制是 GNU C 库提供的一组用于创建、保存、切换用户态执行“上下文”(context)的API,可以看作是 “setjmp/long_jmp” 的“升级版”,主要包括以下四个函数:void makecontext(ucontext_t *ucp, void (*func)(), int argc, ...);int swap转载 2015-08-05 15:02:33 · 693 阅读 · 0 评论 -
微博消息队列架构分析
size=6][size=7][size=5]最近一两年,大部分系统的数据流由基于日志的离线处理方式转变成实时的流式处理方式,并逐渐形成几种通用的使用方式,以下介绍微博的消息队列体系。(点击图片全屏缩放浏览)功能模块当前的主要消息队列分成如图3部分:1、feed信息流主流程处理,图中中间的流程,通过相关MQ worker将数据写入cache、Redis及转载 2015-08-18 14:55:59 · 2214 阅读 · 1 评论 -
同步调用、回调和异步调用区别
同步调用是以一种阻塞式调用比如说:古代的长城的烽火传递信息,现在我们假设每个烽火只能看到相邻的烽火状态,每个烽火的状态只有亮和暗。现在有A、B、C、D四个烽火,A首先点亮,B看到A的烽火亮了,立马去点火,花了2秒点亮。但是这时候负责C烽火的人在睡觉,可是这时候所有人都在等待C点亮,终于C睡了2个小时候看到了B点亮,然后去点亮。D由于长期没有点亮,导致烽火出现问题,因此整个过程都在等待D的完转载 2015-08-05 12:15:54 · 592 阅读 · 0 评论 -
用MySQL实现微博关注关系的方案分析
由于产品需求的需要,我们做的产品里要实现类似微博里的关注关系。本文是以MySQL为基础,分析用MySQL如何实现微博的关注关系,对理解关注关系有一定的意义。关注关系产生的四种关系状态关注粉丝双向关注(互粉)无关系用词follower表示粉丝 -- 追随者用词following表示关注 -- 追随 设计的结构必须能满足以下功能:查询关注转载 2015-08-19 15:33:52 · 3066 阅读 · 2 评论 -
流行的通讯库/消息中间件
2.流行的通讯库/消息中间件网络上各种各样的通讯中间件/MQ多不胜数。具作者所知,比较有名的有ACE、ICE、Boost::ASIO、MSMQ、ActiveMQ、RabbitMQ、ZeroMQ等等。其中ACE、ICE是经典,网上资料很丰富,不过入门门槛较高,说白了就是有点难学难精。属于高端大气上档次的货。Boost::ASIO作为大名鼎鼎的Boost模块之一,感觉很不错,只转载 2015-08-06 16:18:36 · 2011 阅读 · 0 评论 -
用 redis 实现和保护 12306
用 redis 实现和保护 12306by 唐福林 posted on 2012 年 01 月 17 日网上大家都在流传 如何更好的实现一个 12306 ,作为一个技术人员,碰到如此难得的机会,忍不住也想跟着忽悠一把。纯粹从技术角度出发,来设计一个架构和实现方案是非常容易的。但我相信,真实的 12306 的架构师,需要考虑的不仅仅是技术实现,还有数不清的历史包袱,现实约束,转载 2015-08-11 14:37:11 · 1486 阅读 · 0 评论 -
由12306.cn谈谈网站性能技术
12306.cn网站挂了,被全国人民骂了。我这两天也在思考这个事,我想以这个事来粗略地和大家讨论一下网站性能的问题。因为仓促,而且完全基于本人有限的经验和了解,所以,如果有什么问题还请大家一起讨论和指正。(这又是一篇长文,只讨论性能问题,不讨论那些UI,用户体验,或是是否把支付和购票下单环节分开的功能性的东西)业务任何技术都离不开业务需求,所以,要说明性能问题,首先还是想先说说业务转载 2015-08-11 14:36:42 · 659 阅读 · 0 评论 -
转:Tumblr:150亿月浏览量背后的架构挑战
转:Tumblr:150亿月浏览量背后的架构挑战by 唐福林 posted on 2012 年 02 月 17 日导读:和许多新兴的网站一样,著名的轻博客服务Tumblr在急速发展中面临了系统架构的瓶颈。每天5亿次浏览量,峰值每秒4万次请求,每天3TB新的数据存储,超过1000台服务器,这样的情况下如何保证老系统平稳运行,平稳过渡到新的系统,Tumblr正面临巨大的挑战。近日,转载 2015-08-11 14:56:48 · 828 阅读 · 0 评论 -
进程、线程和协程的理解
进程、线程和协程的理解进程、线程和协程之间的关系和区别也困扰我一阵子了,最近有一些心得,写一下。进程拥有自己独立的堆和栈,既不共享堆,亦不共享栈,进程由操作系统调度。线程拥有自己独立的栈和共享的堆,共享堆,不共享栈,线程亦由操作系统调度(标准线程是的)。协程和线程一样共享堆,不共享栈,协程由程序员在协程的代码里显示调度。进程和其他两个的区别还是很明显的。转载 2014-07-17 20:17:36 · 544 阅读 · 0 评论 -
C++ 并发编程的一种思维 — Theron 库简述
本文由 name5566 首发于 InfoQ:http://www.infoq.com/cn/articles/cpp_concurrent_programming_introduce_theron愈发紧迫的挑战现今,单台机器拥有多个独立的计算单元已经太常见了,这点在服务器的处理器上表现尤为明显,据 AMD 的一张 2012-2013 服务器路线图显示,服务器处理器的核心数将在 2转载 2015-01-27 00:40:00 · 3228 阅读 · 0 评论 -
Nginx的事件处理机制
Nginx的事件处理机制:对于一个基本的web服务器来说,事件通常有三种类型,网络事件、信号、定时器。 首先看一个请求的基本过程:建立连接---接收数据---发送数据 。再次看系统底层的操作 :上述过程(建立连接---接收数据---发送数据)在系统底层就是读写事件。1)如果采用阻塞调用的方式,当读写事件没有准备好时,必然不能够进行读写事件,那么久只好等待,等事件准备好了,才能进行读转载 2015-01-03 00:19:51 · 444 阅读 · 0 评论 -
MarioTCP:一个单机可百万并发长连接服务器
注:如果用此服务器做变长data的传输,请在业务处理函数中为input buffer增加清空功能(一行memset搞定;也可以在mariotcp核心代码mario_network.c的read功能中增加,mariotcp为了追求性能极限没做此设置)。mario_network.c 文件的 on_conn_read()函数中:[cpp] view plainc转载 2015-01-03 00:15:47 · 2866 阅读 · 0 评论 -
Nginx特点
Nginx特点:1,跨平台:Nginx 可以在大多数 Unix like OS编译运行,而且也有Windows的移植版本。2,配置异常简单:非常容易上手。配置风格跟程序开发一样,神一般的配置。3,非阻塞、高并发连接:数据复制时,磁盘I/O的第一阶段是非阻塞的。官方测试能够支撑5万并发连接,在实际生产环境中跑到2~3万并发连接数.(这得益于Nginx使用了最新的epoll模型)。4,转载 2015-01-03 00:18:37 · 576 阅读 · 0 评论 -
高并发服务端分布式系统设计概要
======张峻崇 原创。转载请注明出处。====== 又是快一年没写博客了,2013年也只剩尾巴,也不知道今年都忙了些什么。写这篇文章的目的,主要是把今年以来学习的一些东西积淀下来,同时作为之前文章《高性能分布式计算与存储系统设计概要》的补充与提升,然而本人水平非常有限,回头看之前写的文章也有许多不足,甚至是错误,希望同学们看到了错误多多见谅,更欢迎与我讨论并指正。转载 2015-03-25 23:28:35 · 948 阅读 · 0 评论 -
微信、陌陌等著名IM软件设计架构详解
对微信、陌陌等进行了分析,发出来分享一下(时间有些久了)电量:对于移动设备最大的瓶颈就是电量了。因为用户不可能随时携带电源,充电宝。所以必须考虑到电量问题。那就要检查我们工程是不是有后台运行,心跳包发送时间是不是合理。流量:对于好多国内大部分屌丝用户来说可能还是包月30M,那么我们必须站在广大用户角度来考虑问题了。一个包可以解决的就一个包。网络:这个也是IM最核心的内容了,转载 2015-06-19 11:35:48 · 1072 阅读 · 0 评论 -
新浪微博架构
注: 本文是根据网上资料整理而成 1 概述 首先给大家介绍一下新浪微博架构发展的历程,新浪微博在短短一年时间内从零发展到五千万用户,我们的基层架构也发展了3个大的版本。2 架构演变 2.1 第一版LAMP架构 第 一版就 LAMP架构,优点是可以非常快的实现我们的系统。我们看一下技术特点,微博这个产品从架构上来分析,它需要解决的是发表和订阅的问题。我们第一版采用的 是推消息模式,假如说我们转载 2015-07-25 10:55:54 · 1199 阅读 · 0 评论 -
微博“异地多活”部署经验谈
昨天在微信朋友圈简单发了一版,并根据大家的反馈做了一些更新,欢迎继续质疑&反馈。--------------------------------------------------------近期阿里巴巴的同学分享了阿里在“异地双活”(微博称“多机房部署”,为便于理解本文统称“异地多活”)的一些经验( http://www.infoq.com/cn/articles/intervi转载 2015-07-25 11:26:59 · 2105 阅读 · 0 评论 -
新浪微博,腾讯微博mysql数据库主表猜想
用户信息表(t_user_info)字段名称字节数类型描述User_id4uint32用户编号(主键)User_name20Char[20]名称Msg_count4uint32转载 2015-07-25 11:31:20 · 560 阅读 · 0 评论 -
关于类似新浪微博的后台问题
前段时间公司做了一个类似新浪微博业务的手机应用,关于数据库设计有一些疑问:1:类似新浪微博发布与转发,网上有介绍说是通过消息机制来的(ActiveMQ发布/订阅模式?),优先对当前在线的用户推送.但是它微博内容是数据库是怎么设计的呢?比如,一条新微博: 编号,内容,关键词,时间,收藏数,点赞数,回复数,转发数,等等那么,转发一条微博呢,是不是在同一张表中添加几个字段,比如:是否转发标志转载 2015-07-29 09:52:17 · 1282 阅读 · 0 评论 -
【分布式系统工程实现】CAP理论及系统一致性
印象中CAP理论开始流行是从Amazon Dynamo的论文开始的,Amazon的CTO还在他的博客中介绍了最终一致性的概念,从此以后,各种会议和交流中都少不了CAP的影子。然而,对于分布式系统工程设计和开发来说,CAP意味着什么呢?CAP 理论由 Berkerly 的 Brewer 教授提出,三者的含义如下:一致性 ( Consistency) :任何一个读操作总是能读取到之前完转载 2015-08-24 14:11:02 · 564 阅读 · 0 评论 -
集群之MYsql主从服务之引伸出Mysql互为主从(环形结构)
本人资历很浅,说的不对话,万望各位前辈不要计较,另关于环形的问题,我在后面的评论给予回复,其实环形,解决多地域问题比较好的选择关于配置步骤我重新整理了一下(主从AND环形)的配置步骤在我博客中,有兴趣的朋友可以看一下,http://my.oschina.net/u/1246814/blog/267518多谢大家的指导.比如 我有主的1台mysql服务器,俩从转载 2015-07-29 15:32:09 · 778 阅读 · 0 评论 -
Kafka: 大数据处理的利器
当前,友盟消息推送平台的日志服务日均接收二十几亿的请求,预计年底日均请求会突破六十亿。这其中,不得不提到一款大数据处理的利器:Kafka。Kafka 是什么?是小说《变形记》的作者?其实,今天要提的Kafka 是最近非常流行的一款开源软件,如果你留心最近两年的技术发展趋势,那么你会发现,Kafka 的身影经常会出现在各大技术分享大会上。准确的说,Kafka 是 LinkedIn 在转载 2015-07-29 14:35:09 · 3447 阅读 · 1 评论 -
微博feed系统的推(push)模式和拉(pull)模式和时间分区拉模式架构探讨
[文章作者:孙立 链接:http://www.cnblogs.com/sunli/ 更新时间:2010-08-24] sns系统,微博系统都应用到了feed(每条微博或者sns里的新鲜事等我们称作feed)系统,不管是twitter.com或者国内的新浪微博,人人网等,在各种技术社区,技术大会上都在分享自己的feed架构,也就是推拉模式(timyang上次也分享了新浪微薄的模式)。转载 2015-07-29 13:52:18 · 447 阅读 · 0 评论 -
用redis实现微博关注关系
2015-07-23 / jockchou由于产品需求的需要,我们做的产品里要实现类似微博里的关注关系。在过去的一篇博客《用MySQL实现微博关注关系的方案分析》分析了MySQL实现方式以及优缺点,这篇博客介绍Redis的实现思路。关注关系产生的四种关系状态关注粉丝双向关注(互粉)无关系 需求分析在微博中,每一个用户都会有一个关注列表,转载 2015-08-19 16:15:27 · 2921 阅读 · 0 评论