架构
文章平均质量分 86
聂鹏
这个作者很懒,什么都没留下…
展开
-
读《高扩展性网站的50个原则》笔记
个人感触比较深的如下几个原则。 原则一:不要过度设计 开发一个员工打卡系统,这个系统能够处理的员工数量是整个地球上人数的100倍。 要测试系统是否太复杂,一个很好的办法是让负责解决复杂问题的程序员把他的解决方案陈述给公司内的一组程序员(这组程序员最好是公司内不同编码水平,不同工作年限),需要这组程序员中的每一位能够轻松理解该解决方案,能够在无帮助的情况下向原创 2013-11-14 19:01:49 · 693 阅读 · 0 评论 -
负载均衡原理的解析
开头先理解一下所谓的“均衡”不能狭义地理解为分配给所有实际服务器一样多的工作量,因为多台服务器的承载能力各不相同,这可能体现在硬件配置、网络带宽的差异,也可能因为某台服务器身兼多职,我们所说的“均衡”,也就是希望所有服务器都不要过载,并且能够最大程序地发挥作用。一、http重定向当http代理(比如浏览器)向web服务器请求某个URL后,转载 2017-06-07 15:17:48 · 1478 阅读 · 0 评论 -
spring redis 实现分页查询key pattern列表
最近接到一个需求,后台管理页面中,提供一个简单的redis操作界面(其实rdm本身很不错,https://github.com/uglide/RedisDesktopManager/releases/ 为啥还要搞这个,rdm应该只是运维人员使用呢,涉及账号密码等权限的事情),不管,看看基本功能如何实现。第一个需求,列出redis的key,以及能按照pattern查询出key列表。redi原创 2017-06-24 17:23:15 · 11573 阅读 · 0 评论 -
秒杀设计的小结
1为什么这么难?读写冲突,锁非常严重,这个业务最难的地方2优化方向2.1将请求尽量拦截在系统上游。2.2另外产品上做一些调整,但是会损失一些体验,加验证码,做题目等2.3充分利用缓存,读多写少的应用场景3操作3.1浏览器客户端层操作xxxx3.2站点处理xxx3.3服务层xxxx3.4数据xxxx原创 2017-10-11 20:40:19 · 442 阅读 · 1 评论 -
分布式事务探讨系列(一):基础理论CAP和Base
在说分布式事务之前,先看看事务本身。事务定义事务是一组单元化的操作,这组操作可以保证要么全部成功,要么全部失败(只要有一个失败的操作,就会把其他已经成功的操作回滚)。数据库事务为数据库操作序列提供了一个从失败中恢复到正常状态的方法,同时提供了数据库即使在异常状态下仍能保持一致性的方法。当多个应用程序在并发访问数据库时,可以在这些应用程序之间提供一个隔离方法,以防止彼此的操作互...原创 2019-04-22 13:48:14 · 535 阅读 · 0 评论 -
分布式事务探讨系列(二):XA协议和N阶段提交
XA在维基百科中解释道:在计算技术上,XA规范是开放群组关于分布式事务处理 (DTP)的规范。规范描述了全局的事务管理器与局部的资源管理器之间的接口。XA规范的目的是允许多个资源(如数据库,应用服务器,消息队列,等等)在同一事务中访问,这样可以使ACID属性跨越应用程序而保持有效。XA使用两阶段提交来保证所有资源同时提交或回滚任何特定的事务。XA规范描述了资源管理器要支持事务性访问所必需做的事...原创 2019-04-22 14:43:16 · 846 阅读 · 0 评论 -
分布式事务探讨系列(三):本地消息表和MQ等可靠消息解决方案
真的需要分布式事务?因为我们需要各个资源数据一致性。对,看起来合情合理,我们需要,而分布式事务恰好解决这个问题,但是分布式事务提供的是强一致性。试问下,我们真的需要强一致性吗?大多数业务场景都能容忍短暂的不一致,只是不同的业务对不一致的时间窗口要求不同罢了,现实生活中的餐馆买面条,他给你的是单号,而不是面条。爱因斯坦说过:我们无法用我们制造问题的思维方式去解决我们的制造的问题。本地消息...原创 2019-04-22 17:23:08 · 4802 阅读 · 0 评论 -
分布式事务探讨系列(四):TCC解决方案
TCC模式:TCC是一种比较成熟的分布式事务解决方案,一个完整的TCC业务由一个主业务服务和若干个从业务服务组成,主业务服务发起并完成整个业务活动,TCC模式要求从服务提供三个接口:Try、Confirm、CancelTry:完成所有业务检查,预留必须业务资源Confirm:真正执行业务,不作任何业务检查,只使用Try阶段预留的业务资源 Confirm操作满足幂等性Cancel: 释放...原创 2019-04-24 22:53:50 · 1324 阅读 · 0 评论 -
分布式事务探讨系列(五):saga方案
Saga模式是一种分布式异步事务,一种最终一致性事务,是一种柔性事务。Saga事务模型又叫做长时间运行的事务(Long-running-transaction), 它是由普林斯顿大学的H.Garcia-Molina等人提出,它描述的是另外一种在没有两阶段提交的的情况下解决分布式系统中复杂的业务事务问题。Saga的组成每个Saga由一系列sub-transaction Ti 组成每个T...原创 2019-05-06 19:53:39 · 8579 阅读 · 0 评论 -
分布式事务探讨系列(六):开源分布式事务Seata
2019年1月,阿里巴巴中间件团队发起了开源项目 Fescar(Fast & EaSy Commit And Rollback),和社区一起共建开源分布式事务解决方案。Fescar 的愿景是让分布式事务的使用像本地事务的使用一样,简单和高效,并逐步解决开发者们遇到的分布式事务方面的所有难题。Fescar 开源后,蚂蚁金服加入 Fescar 社区参与共建,并在 Fescar 0.4.0 版本...原创 2019-05-14 22:35:56 · 1052 阅读 · 0 评论 -
分布式事务探讨系列(八):一致性算法ZAB
目录名词概念协议实现Phase 0: Leader election(选举阶段,Leader不存在)Phase 1: Discovery(发现阶段,Leader不存在)Phase 2: Synchronization(同步阶段,Leader不存在)Phase 3: Broadcast(广播阶段,Leader存在)Phase 1 快速选举Leader阶段(FLE)Ph...原创 2019-06-27 11:18:07 · 703 阅读 · 0 评论 -
分布式事务探讨系列(九):一致性算法Raft
一致性问题在分布式系统中,一致性问题(consensus problem)是指对于一组服务器,给定一组操作,我们需要一个协议使得最后它们的结果达成一致。由于CAP理论告诉我们对于分布式系统,如果不想牺牲一致性,我们就只能放弃可用性,所以,数据一致性模型主要有以下几种:强一致性、弱一致性和最终一致性等,在本篇章中,我们主要讨论的算法Raft,是一种分布式系统中的强一致性的实现算法。强一致性的...原创 2019-07-01 16:06:29 · 1266 阅读 · 0 评论 -
分布式事务探讨
最近蚂蚁金服开源分布式事务Fescar更名为Seata。在GitHub上的项目地址相应的变更成:https://github.com/seata/seata。新的名字:Seata,意为:Simple Extensible Autonomous Transaction Architecture,是一套一站式分布式事务解决方案。而在 2019年1月,阿里巴巴中间件团队发起了开源项目 Fesca...原创 2019-04-19 17:24:00 · 552 阅读 · 0 评论 -
限流实现方案
限流实现方案 api限流实现原创 2017-04-06 21:39:50 · 10162 阅读 · 2 评论 -
redis与memcached比较
redis介绍Redis是一个开源的key-value存储系统。与Memcached类似,Redis将大部分数据存储在内存中,支持的数据类型包括:字符串、哈希 表、链表、集合、有序集合以及基于这些数据类型的相关操作。Redis使用C语言开发,在大多数像Linux、BSD和Solaris等POSIX系统上无需任何外部依赖就可以使用。Redis支持的客户端语言也非常丰富,常用的计算机语言如C、C#原创 2017-03-29 20:21:36 · 299 阅读 · 0 评论 -
大型分布式网站架构技术总结
大型分布式网站架构技术总结转载 2016-12-23 16:11:29 · 434 阅读 · 0 评论 -
spring-remoting调用的介绍
Spring目前提供了对RMI、HttpInvoker、Hessian、Burlap及WebService等Remoting技术的集成。Spring屏蔽了这些实现技术的差异,用户只需开发简单的Java对象(Plain Old Java Objects,POJO)然后按照Spring规定的格式进行配置文件的编写即可。原创 2014-10-13 10:20:48 · 1387 阅读 · 0 评论 -
大型Web2.0站点构建技术初探
已经遗忘转自哪里了,本地word保存的。转载 2014-11-20 15:56:09 · 705 阅读 · 0 评论 -
Java API 设计指南
作者: Eamonn McManus原文地址:http://www.artima.com/weblogs/viewpost.jsp?thread=142428译者: 王磊电子邮件: wl_95421@yahoo.com.cn(该译文可以随便转载,但请保留前面的声明,谢谢)前言:市场上关于如何设计和编写优秀 Java代码的书如此之多,可能要用汗牛充椟来形容,但是想找到转载 2014-11-20 16:14:46 · 869 阅读 · 0 评论 -
slf4j、log4j、logback的那些事
一. slf4j介绍二. log原创 2014-11-21 16:10:18 · 766 阅读 · 0 评论 -
spring-remoting中的httpInvoker实现并安全验证
1. 简单介绍httpInvoker的实现 2.原创 2014-10-09 14:59:49 · 5235 阅读 · 0 评论 -
java打包成jar,并执行jar
java打包成jar执行jar执行jar原创 2014-11-25 15:48:58 · 677 阅读 · 0 评论 -
activeMQ学习之一(简单例子介绍,含spring结合)
1. activeMQ简单介绍xxxxxxxx2. 第一个简单例子helloWorldxxxxxxx3.spring+activemq+maven集成xxxxxx4.密码设置与修改,包括端口修改等 web容器中的访问密码,消息队列中的操作安全验证4.1 web容器中的访问密码,web容器修改访问端口xx4.2 消息队列原创 2016-11-22 15:49:24 · 1776 阅读 · 0 评论 -
activeMQ学习之二(基本介绍消息机制和持久化等)
JMS消息确认机制 JMS消息只有在被确认之后,才认为已经被成功地消费了。消息的成功消费通常包含三个阶段:客户接收消息、客户处理消息和消息被确认。在事务性会话中,当一个事务被提交的时候,确认自动发生。在非事务性会话中,消息何时被确认取决于创建会话时的应答模式(acknowledgement mode)。该参数有以下三个可选值: Session.AUTO_ACKNOWLEDGE。原创 2016-11-25 15:40:05 · 1085 阅读 · 0 评论 -
activeMQ学习之三(常见的一些问题和心得)
转自:http://blog.csdn.net/u010310183/article/details/51683141 ,作者:苏格拉低1.先讲严重的:服务挂掉。这得从ActiveMQ的储存机制说起。在通常的情况下,非持久化消息是存储在内存中的,持久化消息是存储在文件中的,它们的最大限制在配置文件的节点中配置。但是,在非持久化消息堆积到一定程度,内存告急的时候,A转载 2016-11-30 11:42:16 · 364 阅读 · 0 评论 -
java,Redis实战之常见数据结构操作
redis基本数据操作键操作xxxx字符串操作xxxx整数和浮点数xxxx列表xxxxx集合(Set)xxxx散列xxx有序集合xxxx排序sortxxxx原创 2016-12-20 23:05:44 · 2148 阅读 · 0 评论 -
java,Redis实战之jedis搭建工程运行
在不同的线程中使用相同的Jedis实例会发生奇怪的错误。但是创建太多的实现也不好因为这意味着会建立很多sokcet连接,也会导致奇怪的错误发生。单一Jedis实例不是线程安全的。为了避免这些问题,可以使用JedisPool, JedisPool是一个线程安全的网络连接池。可以用JedisPool创建一些可靠Jedis实例,可以从池中拿到Jedis的实例。这种方式可以解决那些问题并且会实现高效的性能原创 2016-12-20 23:03:18 · 3197 阅读 · 0 评论 -
redis安装基本配置
下载安装xxx基本配置,举例几个1.后台进程运行xxx2.关闭启动xxx3.设置用户名密码xxxx4.连接服务器出错xxx原创 2016-12-20 22:08:30 · 422 阅读 · 0 评论 -
分布式事务探讨系列(七):一致性算法Paxos
前言Google Chubby的作者Mike Burrows说过这个世界上只有一种一致性算法,那就是Paxos,其它的算法都是残次品。PAXOS可以用来解决分布式环境下,选举(或设置)某一个值的问题(比如更新数据库中某个user的age是多少)。分布式系统中有多个节点就会存在节点间通信的问题,存在着两种节点通讯模型:共享内存(Shared memory)、消息传递(Messages pas...原创 2019-06-17 11:21:33 · 387 阅读 · 0 评论