
项目架构
老莫1688
生命不息 学习不止
展开
-
分布式消息队列(1)
一、消息队列概述消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题。实现高性能,高可用,可伸缩和最终一致性架构。是大型分布式系统不可缺少的中间件。目前在生产环境,使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ等。二、消息队列应用场景以下介绍消息队列在实际应用中常用的使用场景。异步处理,...原创 2016-07-18 16:55:16 · 451 阅读 · 0 评论 -
架构设计:生产者-缓存队列-消费者(1)
原文:http://www.cnblogs.com/fgcs/p/4772655.html[0]:概述今天打算来介绍一下“生产者/消费者模式”,这玩意儿在很多开发领域都能派上用场。由于该模式很重要,打算分几个帖子来介绍。今天这个帖子先来扫盲一把。如果你对这个模式已经比较了解,请跳过本扫盲帖,直接看下一个帖子(关于该模式的具体应用)。看到这里,可能有同学心中犯嘀咕了:在四人帮(GO...原创 2016-07-18 17:29:51 · 1127 阅读 · 0 评论 -
架构设计:生产者-缓存队列-消费者(2)
[1]:如何确定数据单元?既然前一个帖子已经搞过扫盲了,那接下来应该开始聊一些具体的编程技术问题了。不过在进入具体的技术细节之前,咱们先要搞明白一个问题:如何确定数据单元?只有把数据单元分析清楚,后面的技术设计才好搞。★啥是数据单元何谓数据单元捏?简单地说,每次生产者放到缓冲区的,就是一个数据单元;每次消费者从缓冲区取出的,也是一个数据单元。对于前一个帖子中寄信的例子,我们可以把每一封...原创 2016-07-20 21:43:33 · 522 阅读 · 0 评论 -
架构设计:生产者-缓存队列-消费者(3)
[2]:队列缓冲区经过前面两个帖子的铺垫,今天终于开始聊一些具体的编程技术了。由于不同的缓冲区类型、不同的并发场景对于具体的技术实现有较大的影响。为了深入浅出、便于大伙儿理解,咱们先来介绍最传统、最常见的方式。也就是单个生产者对应单个消费者,当中用队列(FIFO)作缓冲。关于并发的场景,在之前的帖子“进程还线程?是一个问题!”中,已经专门论述了进程和线程各自的优缺点,两者皆不可偏废原创 2016-07-20 21:44:20 · 725 阅读 · 0 评论 -
架构设计:生产者-缓存队列-消费者(4)
[3]:环形缓冲区前一个帖子提及了队列缓冲区可能存在的性能问题及解决方法:环形缓冲区。今天就专门来描述一下这个话题。为了防止有人给咱扣上“过度设计”的大帽子,事先声明一下:只有当存储空间的分配/释放非常频繁并且确实产生了明显的影响,你才应该考虑环形缓冲区的使用。否则的话,还是老老实实用最基本、最简单的队列缓冲区吧。还有一点需要说明一下:本文所提及的“存储空间”,不仅包括内存,还可能包括诸如...原创 2016-07-20 21:44:56 · 551 阅读 · 0 评论 -
架构设计:生产者-缓存队列-消费者(5)
[4]:双缓冲区“双缓冲区”是一个应用很广的手法。该手法用得最多的地方想必是屏幕绘制相关的领域(主要是为了减少屏幕闪烁)。另外,在设备驱动和工控方面,双缓冲也经常被使用。不过今天要聊的,并不是针对上述的某个具体领域,而是侧重于并发方面的同步/互斥开销。另外提醒一下,双缓冲方式和前面提到的队列缓冲、环形缓冲是可以结合使用滴。 ★为啥要双缓冲区记得前几天在介绍队列缓冲区时,提及了普通队...原创 2016-07-20 21:45:25 · 412 阅读 · 0 评论 -
Java实现生产者消费者问题与读者写者问题
摘要: Java实现生产者消费者问题与读者写者问题1、生产者消费者问题 生产者消费者问题是研究多线程程序时绕不开的经典问题之一,它描述是有一块缓冲区作为仓库,生产者可以将产品放入仓库,消费者则可以从仓库中取走产品。解决生产者/消费者问题的方法可分为两类:(1)采用某种机制保护生产者和消费者之间的同步;(2)在生产者和消费者之间建立一个管道。第一种方式有较高的效率,并且易于实...原创 2016-09-05 17:41:54 · 1251 阅读 · 1 评论 -
【ZeroMQ】ZeroMQ及其模式
刚刚这个国庆,对程序员来说,最糟心的事情莫过于 ZeroMQ 的作者 Pieter Hintjens 的安乐死。想必你的朋友圈也传过了那篇令人感怀的 A protocal for dying。如果你还没看,翻翻朋友圈,仔细读一读,然后收藏起来,一两年后再看上一看。可敬的 Pieter,临终前的 last words,也不放过自己搞 messaging 的本行,借用了 Alice 和 Bob(...转载 2016-10-16 17:10:55 · 6167 阅读 · 0 评论 -
系统性能监控系列1:使用JAVA动态代理实现非侵入式的性能测量方法
欢迎关注公众号:当我们开发的服务上线后,线上的系统运行状态(是否正常,性能是否满足需求)等等就成了架构师和研发工程师关心的问题 。对于系统监控有很多维度,比如:监控CPU,磁盘IO,监控服务请求的响应时间等。相对于这些来说,我今天要给大家分享的是具体的代码层次的性能测量。 有过一定开发经验的朋友,在代码遇到性能问题的时候,需要对代码进行性能测量。一般的方法是:在调用每一...转载 2016-10-16 17:11:43 · 2310 阅读 · 0 评论 -
【状态机】使用JAVA实现的具有分布式调度功能的状态机
欢迎关注公众号:Asshole是啥?Asshole 是具有流程编排能力的分布式事件处理框架,如图Asshole能解决的问题l 可扩展的事件异步处理使用场景:需要异步处理解耦的地方PS:asshole对新增加一个事件及处理十分简单,只需要继承Event类和AbstractHandler类即可 l 复用基本事件进行流程编排 使用场景:将碎...转载 2016-11-02 11:37:32 · 3101 阅读 · 0 评论 -
ActiveMQ与Kafka对比
今天让我们来谈谈身份高贵,举止优雅的消息中间件,主要还是浅谈,消息中间件这块水太深。大体上我们结合互联网业务做一些探讨,从互联网主要关心的消息安全性,服务器的稳定性容错性以及吞吐量三方面来讲。由于这块产品非常多,我只挑选两个我使用过的产品结合使用经验做一些研究,他们是ActiveMQ和Kafka,前者完全实现了JMS的规范,后者看上去有一些“野路子”,并没有纠结于JMS规范,剑走偏锋的设计了另...转载 2017-06-02 10:47:26 · 7060 阅读 · 0 评论 -
【微服务】唱吧DevOps的落地,微服务CI/CD的范本技术解读
1、业务架构:从单体式到微服务 K歌亭是唱吧的一条新业务线,旨在提供线下便捷的快餐式K歌方式,用户可以在一个电话亭大小的空间里完成K歌体验。K歌亭在客户端有VOD、微信和Web共三个交互入口,业务复杂度较高,如长连接池服务、用户系统服务、商户系统、增量更新服务、ERP等。对于服务端的稳定性要求也很高,因为K歌亭摆放地点不固定,很多场所的运营活动会造成突发流量。 为了快速开发上线,K歌亭...转载 2017-08-02 09:52:07 · 642 阅读 · 0 评论 -
消息队列设计精要
消息队列设计精要王烨 ·2016-07-01 16:10消息队列已经逐渐成为企业IT系统内部通信的核心手段。它具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能,成为异步RPC的主要手段之一。当今市面上有很多主流的消息中间件,如老牌的ActiveMQ、RabbitMQ,炙手可热的Kafka,阿里巴巴自主开发的Notify、MetaQ、RocketMQ等。本文不会一一介绍这些消...原创 2016-07-18 16:33:04 · 475 阅读 · 0 评论 -
【权限设计】采用BigInteger进行的权限设计
最近看到了一个项目的权限是根据bigineger来进行计算的菜单权限,觉得还是不错,存储上只需要存储在一个字段里就可以了,通过计算算出该角色的菜单权限即可,效率也非常的快,放在session中也非常的小,下面简单说一下思路。 首先,将界面中选好的菜单树,勾选完成后传到后台,后台通过转成字符串数组来进行设值 [java] view plain c原创 2017-09-04 10:08:35 · 559 阅读 · 0 评论 -
消息系统设计与实现
欢迎关注公众号:----------------------------------------------正文---------------------------------------------------- 消息系统设计与实现文/JC_Huang(简书作者)原文链接:http://www.jianshu.com/p/f4d7827821f1著作权归作者所有,转...原创 2016-07-18 17:05:50 · 22421 阅读 · 4 评论 -
互联网公司--技术分享网站
1、美团2、IBM3、腾讯原创 2016-07-18 16:23:00 · 1054 阅读 · 0 评论 -
【Kafka】深入了解kafka
背景介绍Kafka简介 Kafka是一种分布式的,基于发布/订阅的消息系统。主要设计目标如下:以时间复杂度为O(1)的方式提供消息持久化能力,并保证即使对TB级以上数据也能保证常数时间的访问性能 高吞吐率。即使在非常廉价的商用机器上也能做到单机支持每秒100K条消息的传输 支持Kafka Server间的消息分区,及分布式消息消费,同时保证每个partition内的消息顺...转载 2017-06-02 11:28:19 · 518 阅读 · 0 评论 -
分布式消息队列(2)
四、JMS消息服务讲消息队列就不得不提JMS 。JMS(JAVA Message Service,java消息服务)API是一个消息服务的标准/规范,允许应用程序组件基于JavaEE平台创建、发送、接收和读取消息。它使分布式通信耦合度更低,消息服务更加可靠以及异步性。在EJB架构中,有消息bean可以无缝的与JM消息服务集成。在J2EE架构模式中,有消息服务者模式,用于实现消息与应原创 2016-07-20 21:52:59 · 448 阅读 · 0 评论 -
大型网站架构:负载均衡(1)
面对大量用户访问、高并发请求,海量数据,可以使用高性能的服务器、大型数据库,存储设备,高性能Web服务器,采用高效率的编程语言比如(Go,Scala)等,当单机容量达到极限时,我们需要考虑业务拆分和分布式部署,来解决大型网站访问量大,并发量高,海量数据的问题。从单机网站到分布式网站,很重要的区别是业务拆分和分布式部署,将应用拆分后,部署到不同的机器上,实现大规模分布式系统。分布式和业务拆分解决...原创 2016-07-18 16:57:09 · 428 阅读 · 0 评论 -
大型网站架构:负载均衡(2)
大型网站架构系列:负载均衡详解(2)本文是负载均衡详解的第一篇文章,介绍负载均衡算法, 硬件负载均衡。部分内容摘自读书笔记。三、负载均衡算法常用的负载均衡算法有,轮询,随机,最少链接,源地址散列,加权等方式;3.1 轮询将所有请求,依次分发到每台服务器上,适合服务器硬件同相同的场景。优点:服务器请求数目相同;缺点:服务器压力不一样,不适合服务器配置不同的情况;3.2...原创 2016-07-20 22:12:02 · 356 阅读 · 0 评论 -
大型网站架构系列:负载均衡详解(3)
一、软件负载均衡概述硬件负载均衡性能优越,功能全面,但是价格昂贵,一般适合初期或者土豪级公司长期使用。因此软件负载均衡在互联网领域大量使用。常用的软件负载均衡软件有Nginx,Lvs,HaProxy等。本文参考大量文档,部分为直接拷贝,参考出处见负载均衡详解(4)。二、Ngnix负载均衡Ngnix是一款轻量级的Web服务器/反向代理服务器,工作在七层Http协议的负载均衡系原创 2016-07-20 22:12:55 · 464 阅读 · 0 评论 -
大型网站架构系列:负载均衡详解(4)
本文是负载均衡详解的第四篇,主要介绍了LVS的三种请求转发模式和八种负载均衡算法,以及Haproxy的特点和负载均衡算法。具体参考文章,详见最后的链接。 三、LVS负载均衡LVS是一个开源的软件,由毕业于国防科技大学的章文嵩博士于1998年5月创立,用来实现Linux平台下的简单负载均衡。LVS是Linux Virtual Server的缩写,意思是Linux虚拟服务器。原创 2016-07-20 22:14:03 · 697 阅读 · 0 评论 -
分布式系统架构
1、大型系统/分布式系统架构设计、理论、经验2、分布式技术、框架,如redis、kafka、zookeeper等等例:Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)http://doc.okbase.net/congcong68/archive/112508.html原创 2016-03-31 09:27:33 · 540 阅读 · 0 评论 -
大型网站架构之系列(1)——纵观历史演变(上)
我们知道一个网站都是随着业务的发展,逐渐演变成几万服务器,几亿用户数的大型网站,经历了若干年,甚至上十年的发展成为大型网站,然而真正亲身经历这个发展过程的人已经不多了,这种人也是拿着公司股票,赶都赶不走的人,所以正因为很多人没有亲身经历过,所以对架构的演变没有深刻的了解,包括我自己在内,不过没吃过猪肉,也看过猪跑。。。 一:第一代架构 这年头创业大多都是从穷屌丝开始的,...转载 2016-11-27 14:59:26 · 319 阅读 · 0 评论 -
大型网站架构之系列(2)——纵观历史演变(下)
这篇文章本来准备前几天就得写的,谁也没想到这段时间公司的RC太多了,含酸苦逼的加班,加班。。。所以在大一点的公司上班,写代码的责任心一定要强,或许就因为你的一些小bug,给公司带来不少损失。。。这在以前公司真的没多大体会的。 好了,继续说说架构的演变,从第四代架构中可以看到,我们通过做应用程序层的负载均衡可以比较完美的解决了在整个架构中让应用程序层不再成为瓶颈,通过A10,我们可...转载 2016-11-27 15:37:13 · 360 阅读 · 0 评论 -
大型网站架构之系列(3)——死了都要说的缓存
说到缓存,我想大家跟我一样都很兴奋,当我们遭遇网站性能瓶颈的时候,缓存是一剂强心针,也是一粒紧急妈富隆,从而在优化网站性能方面冠上了第一定律的帽子,我们前年在做淘应用的时候,就遭遇了性能瓶颈,短时间内采用缓存紧急优化,给我们大优化之前争取了宝贵的时间。 一:缓存的种类 要说缓存有多少种,太多了,比如浏览器缓存,文件缓存,片段缓存,数据库缓存等等,合理利用这些缓存则能大...转载 2016-11-27 15:37:53 · 349 阅读 · 0 评论 -
大型网站架构之系列(4)——分布式中的异步通信
我们知道在面向对象编程中,总会想着各种办法来实现代码的解耦,从而让项目中的各种人员面对自己熟悉的业务进行开发,做到术业有专攻,比如大家非常熟悉的三层架构,MVC,MVP以及MVVM模式,让前端设计专注于html的制作,让后端开发人员更加专注于业务逻辑的编写,可以看到,我们这么做的目的就是想最大程度的做到系统的可扩展和可维护性,那么我们的大型网站是不是也要遵守这种模式呢? 一:...转载 2016-11-27 15:38:30 · 386 阅读 · 0 评论 -
分布式缓存--redis和memcache
redis 日常开发中,总会接触到一些好玩的东西,比如这篇的redis,一说到redis,可能就有人跟memcache做比较了,是呀,memcache只能说是简单的kv内存数据结构,而redis支持的数据类型就丰富多了,当然最能让人看上眼的就是SortedSet。有了它,我们就可以玩一些“贪心”的问题,比如适合“贪心”的优先队列,说到优先队列,我们以前实现了仅仅是内存形式...原创 2016-11-27 15:40:56 · 2826 阅读 · 1 评论 -
分布式架构中一致性解决方案——Zookeeper集群搭建
当我们的项目在不知不觉中做大了之后,各种问题就出来了,真jb头疼,比如性能,业务系统的并行计算的一致性协调问题,比如分布式架构的事务问题,我们需要多台机器共同commit事务,经典的案例当然是银行转账,支付宝转账这种,如果是一台机器的话,这个还是很方便的,windows中自带了一个事务协调器mstsc,但是呢,你那种很大很牛逼的项目不可能全是windows服务器,对吧,有些人为了解决这个问...原创 2016-11-27 15:42:55 · 625 阅读 · 0 评论 -
【缓存】MemCache详细解读
MemCache是什么?MemCache是一个自由、源码开放、高性能、分布式的分布式内存对象缓存系统,用于动态Web应用以减轻数据库的负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高了网站访问的速度。 MemCaChe是一个存储键值对的HashMap,在内存中对任意的数据(比如字符串、对象等)所使用的key-value存储,数据可以来自数据库调用、API调用,或者页面渲染的结...转载 2017-05-30 19:07:33 · 974 阅读 · 0 评论 -
【分布式】分布式事务的一种实现方式--状态流转
原文出处: qq_23589553 关于分布式事务,参考了网上提到的一些办法,比如利用消息队列实现分布式事务,补偿事务,TCC,最大努力送达,等等。这里给出自己的一些理解和实现。可以称之为状态流转的实现。一些要点大事务拆分成多个小事务,每个小事务都是单机上的事务 要支持幂等,即每个小事务多次执行时结果要相同。 如何达到幂等,一般是加一个状态,如一个带有状态字段的行,在写入业务数...转载 2017-11-13 14:19:13 · 596 阅读 · 0 评论