
架构
「已注销」
这个作者很懒,什么都没留下…
展开
-
Redis实现消息队列
基于Redis消息队列-实现短信服务化1.Redis实现消息队列原理常用的消息队列有RabbitMQ,ActiveMQ,个人觉得这种消息队列太大太重,本文介绍下基于Redis的轻量级消息队列服务。 一般来说,消息队列有两种模式,一种是发布者订阅模式,另外一种是生产者和消费者模式。Redis的消息队列,也是基于这2种原理的实现。 发布者和订阅者模式:发布者发送消息到队列,每个订阅者都能收到一样的消原创 2016-04-25 22:48:34 · 60944 阅读 · 17 评论 -
大型web系统数据缓存设计
前言 在高访问量的web系统中,缓存几乎是离不开的;但是一个适当、高效的缓存方案设计却并不容易;所以接下来将讨论一下应用系统缓存的设计方面应该注意哪些东西,包括缓存的选型、常见缓存系统的特点和数据指标、缓存对象结构设计和失效策略以及缓存对象的压缩等等,以期让有需求的同学尤其是初学者能够快速、系统的了解相关知识。数据库的瓶颈 2.1 数据量 关系型数据库的数据量是比较小的,以我们常用的MySQ转载 2015-12-08 11:27:03 · 1516 阅读 · 0 评论 -
Redis和MongoDB原理简析
1. Redis1.1 NIO通信因都在内存操作,所以逻辑的操作非常快,减少了CPU的切换开销,所以为单线程的模式(逻辑处理线程和主线程是一个)。 reactor模式,实现自己的多路复用NIO机制(epoll,select,kqueue等) 单线程处理多任务1.2 数据结构hash+bucket结构,当链表的长度过长时,会采取迁移的措施(扩展原来两倍的hash表,把数据迁移过去,e原创 2015-12-21 22:11:28 · 971 阅读 · 0 评论 -
分析Redis架构设计
一、前言因为近期项目中开始使用Redis,为了更好的理解Redis并应用在适合的业务场景,需要对Redis设计与实现深入的理解。我分析流程是按照从main进入,逐步深入分析Redis的启动流程。同时根据Redis初始化的流程,理解Redis各个模块的功能及原理。二、redis启动流程1.初始化server变量,设置redis相关的默认转载 2015-12-21 18:35:05 · 179 阅读 · 0 评论 -
分布式文件系统FastDFS设计原理
FastDFS是一个开源的轻量级分布式文件系统,由跟踪服务器(tracker server)、存储服务器(storage server)和客户端(client)三个部分组成,主要解决了海量数据存储问题,特别适合以中小文件(建议范围:4KB Storage serverStorage server(后简称storage)以组(卷,group或volume)为单位组转载 2015-12-18 18:05:04 · 857 阅读 · 0 评论 -
一致性Hash算法与Java实现
1.简介1.1 普通hash算法普通hash算法是通过key将数据映射到具体节点上,如key%N,key为数据的hash值,N为节点数量,如果有机器加入或者退出集群,则key映射失效了,导致数据丢失。 1.2 一致性hash算法相比普通hash算法,一致性hash就可以解决这种问题。一致性hash是分布式系统常用的一种算法,常用于负载均衡。2.原理分析2.1 环形Hash空间一致性hash算法,将原创 2015-12-17 17:14:02 · 2294 阅读 · 1 评论 -
TDDL最佳实践
尽一切可能利用单机资源单机事务 单机join 好的存储模型,就是尽可能多的做到以下几点:尽可能走内存 尽可能将一次要查询到的数据物理的放在一起 通过合理的数据冗余,减少走网络的次数 合理并行提升响应时间 读取数据瓶颈,可以通过加slave节点解决 写入瓶颈,用规则sharding和扩容来解决原创 2015-11-13 10:27:39 · 908 阅读 · 0 评论 -
深入学习微框架:Spring Boot
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。多年以来,Spring IO平台饱受非议的一点就是大量的XML配置转载 2015-11-10 13:38:33 · 1580 阅读 · 1 评论 -
被误解的 Node.js
如果经常浏览各大技术网站,那么你会发现自己很难错过 Node.js,程序员们兴奋地说:JavaScript 也可以开发服务器端的程序了!没错,Node.js 的确为我们提供了这种便利,前台后台都用同一种语言实现。但这种兴奋,却极易掩盖 Node.js 另外一个重要的特性:基于事件驱动的编程模型。而后者,才真正使得 Node.js 成为开发高并发大型网络应用的关键。本文详细介绍了 Node.js 的转载 2015-11-05 11:12:20 · 832 阅读 · 0 评论 -
《高并发Web网站构建-徐汉彬》攒课-- 在线学习笔记
高并发Web网站构建-徐汉彬浏览器并发连接数一次HTTP通信TCP三次握手(保持连接) 请求数据/响应数据(达到超时条件) TCP四次断开短连接,长连接Keep-alive==================Apacheapachctl -v 版本Prefock模式多进程成熟文档,允许线程不安全原创 2015-11-04 21:09:05 · 1811 阅读 · 0 评论 -
《企业应用架构模式》读书笔记2-分布策略
远程接口和本地接口本地接口最好是细粒度的比如,如果有一个地址类,则一个好的接口应该有单独的方法,分别获取城市,地区,街道等。细粒度接口非常好,因为它符合一般面向对象的原则,即尽可能细分,使我们可以以不同方式组合和覆盖这些方法以便在将来进行设计扩展。远程接口应该是粗粒度的。应该在一次调用里得到城市,地区,街道信息,而不是三次调用。虽然这样扩展性较差,但是为了性能值得这么做。分布对象设计第一定律不原创 2015-11-04 16:02:39 · 780 阅读 · 0 评论 -
《企业应用架构模式》读书笔记1-并发
避免并发隔离性和不变性1、隔离 划分数据,使得每一片数据只能被一个执行单元访问。 隔离是一种减少错误发生的有效技术。可以使用隔离方法安排资源,以便程序进入的是隔离区,而无需考虑并发问题。 好的并发设计应该是:找个各种创建隔离区的方法,并且保证每个隔离区里能够完成尽可能多的任务。2、不变性 只有共享数据可以修改的情况下,才会出现并发问题。所以,一个避免并发冲突的方法是识原创 2015-11-04 16:13:13 · 789 阅读 · 0 评论