
架构与分布式系统
文章平均质量分 60
大树叶
宠辱不惊,看庭前花开花落;去留无意,望天空云卷云舒。
展开
-
电商系统如何防止超卖
电商系统的超卖原创 2023-03-08 22:15:14 · 214 阅读 · 0 评论 -
K8S + ISTIO 金丝雀部署的例子
k8s istio 金丝雀 实战原创 2023-03-07 21:34:28 · 874 阅读 · 0 评论 -
分布式锁的三种实现方法
目前几乎所有的大型web应用全都是分布式部署的,分布式场景中的数据一致性问题一直是一个比较重要的话题。分布式应用中的CAP理论告诉我们:任何一个分布式系统都无法同时满足一致性(Consistency)、可用性(Availability)、分区容错性(Partation tolerance)。最多只能同时满足其中两项。所以在设计之初,就需要对三者做出取舍。一般在互联网场景中,都会选...原创 2017-07-17 00:23:22 · 959 阅读 · 0 评论 -
Nginx + Tomcat 动静分离实现负载均衡
原文地址:http://www.cnblogs.com/wunaozai/p/5001742.html转载 2017-08-17 16:44:41 · 333 阅读 · 0 评论 -
推荐:MHA:MySQL高可用架构的利器
简介:MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件。在MySQL故障切换过程中,MHA能做到在0~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能在转载 2017-07-26 14:20:26 · 729 阅读 · 0 评论 -
常见的MYSQL高可用解决方案
MySQL 是一种关系数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL 软件采用了双授权政策(本词条“授权政策”),它分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。由于其社区版的性能卓越,搭配 PHP 和 Apache 可组成良好转载 2017-07-27 02:23:19 · 2730 阅读 · 0 评论 -
关于抽奖概率
关于抽奖概率最近做一个抽奖系统,对现在已经有的抽奖系统关于概率的这个东西进行了一些了解。于是想想针对这样的一些抽奖概率作为一些说明:首先我们来说说比较常见的随机概率:这就好像我们说的,我有一百个乒乓,其中一个是红色。然后把这些放到一个盒子里面,然后你在进行摸。当你摸完一次以后,在把你摸到的乒乓放回到盒子里面,在进行摸。这些,你每次摸中红色球的概率都是1/100。于是这样就产生的一个转载 2017-08-19 18:05:53 · 7252 阅读 · 0 评论 -
实现分布式锁:Redis SETNX 命令
使用Redis的 SETNX 命令可以实现分布式锁,下文介绍其实现方法。SETNX命令简介命令格式SETNX key value将 key 的值设为 value,当且仅当 key 不存在。 若给定的 key 已经存在,则 SETNX 不做任何动作。 SETNX 是SET if Not eXists的简写。返回值返回整数,具体为 - 1,当 key 的值被设置 -...原创 2017-07-17 00:16:52 · 824 阅读 · 0 评论 -
电子商务网站中订单号设计有什么规则和依
原文地址总结:设计编码的规则如下:下单渠道1位+支付渠道1位+业务类型1位+时间信息4位+下单时间的Unix时间戳后8位(加上随机码随机后的数字)+用户user id后4位。然后你会说,这样算下来就订单号就19位了啊,一点都不精简啊,不好记不好念不好输的。但我说的上面的这些业务标记,你不一定要全部加上啊。这里“”Unix时间戳后8位(加上随机码随机后的数转载 2017-07-05 23:11:37 · 1125 阅读 · 0 评论 -
Quartz集群原理及配置应用
1、Quartz任务调度的基本实现原理 Quartz是OpenSymphony开源组织在任务调度领域的一个开源项目,完全基于Java实现。作为一个优秀的开源调度框架,Quartz具有以下特点: (1)强大的调度功能,例如支持丰富多样的调度方法,可以满足各种常规及特殊需求; (2)灵活的应用方式,例如支持任务和调度的多种组合方式,支持调度数据的多种存储方式;转载 2017-06-11 14:11:10 · 404 阅读 · 0 评论 -
分布式任务系统 tbschedule
分布式任务系统:比较有名的是 Quartz集群版(Spring 带的),tbschedule(阿里开源),elastic-job(当当开源)。tbschedule 地址:http://code.taobao.org/p/tbschedule/wiki/index/原创 2017-06-11 12:59:51 · 1058 阅读 · 0 评论 -
Java 演示:如何使用Zookeeper 集群例子
概述Zookeeper是Apache下的项目之一,倾向于对大型应用的协同维护管理工作。IBM则给出了IBM对ZooKeeper的认知: Zookeeper 分布式服务框架是 Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。总之,可以用“协调”这个核心的词来形容它的作用。关于转载 2017-06-04 15:09:46 · 6046 阅读 · 2 评论 -
Zookeeper原理架构
Zookeeper到底是什么!?学一个东西,不搞明白他是什么东西,哪还有心情学啊!! 首先,Zookeeper是Apache的一个Java项目,属于Hadoop系统,扮演管理员的角色。 然后看到官网那些专有名词,实在理解不了。在Zookeeper的官网上有这么一句话:ZooKeeper is a centralized service for maintaining confi转载 2017-06-04 14:30:29 · 757 阅读 · 0 评论 -
分布式调度框架TBSchedule 分布式架构
TBSchedule是一款非常优秀的高性能分布式调度框架,在本人的实际项目中也用到并改进了该代码,效果还不错。下面整理了一篇不错的介绍该框架不错的文章。转文开始:本文是作者结合多年使用TBSchedule的经验,在研读三遍源码的基础上完成。期间作者也与阿里空玄有过不少技术交流,并非常感谢空玄给予的大力支持。另外,作者写这篇文章的目的一是出于对TBSchedule的一种热爱,转载 2017-06-04 12:28:04 · 1834 阅读 · 0 评论 -
分布式Quorum机制,NWR策略读写模型
分布式系统中的读写模型 分布式系统是由多个节点(指代一台服务器、存储设备等)构成,由于网络异常、宕机等节点并不能保证正常工作,特别是在节点数量很大的时候,出现异常状况的节点几乎是肯定的。为了保证系统的正常运行,能够提供可靠的服务,分布式系统中对于数据的存储采用多份数据副本(注:这里的副本并非只用来备份,它可参与提供系统服务)来保证可靠性,也就是其中一个节点上读取数据失败了那么可以转向另外转载 2017-08-07 09:49:51 · 4031 阅读 · 0 评论 -
Eureka的高可用实战:服务提供者、服务消费者集群之间的调用方式
Eureka的高可用以及服务提供者、服务消费者集群之间的调用方式1.为什么要进行Eureka的集群2.搭建eureka集群3.服务提供者注册到高可用eureka上4.服务提供者集群状态5.服务消费者消费6.综上上文我们讲了服务提供者和服务消费者在eureka上进行服务注册和服务之间进行调用,这节来讲eureka的集群模式和服务转载 2017-09-14 20:52:38 · 1396 阅读 · 0 评论 -
关于缓存穿透、缓存并发、热点缓存的讨论
我们在用缓存的时候,不管是Redis或者Memcached,基本上会通用遇到以下三个问题:缓存穿透 缓存雪崩 缓存失效下面的文章就专门来讲这些技术(个人mark一下)http://blog.didispace.com/chengchao-huancun-zuijiazhaoshi/https://blog.csdn.net/Mr_Yanghao/article/details/7...转载 2019-01-08 23:40:13 · 215 阅读 · 0 评论 -
推荐:新浪微博,腾讯微博 mysql数据库主表设计
用户信息表(t_user_info)字段名称字节数类型描述User_id4uint32用户编号(主键)User_name20Char[20]名称Msg_count4uint32发布消息数量,可以作为t_msg_info水平切分新表的auto_incrementFans_count4uint32粉丝数量Follow_count4Uint32关注对象数量备注:以User_id取模分表 用户之间关系表(...转载 2018-04-01 17:08:37 · 3766 阅读 · 1 评论 -
推荐:微信红包的架构设计简介
概况:2014年微信红包使用数据库硬抗整个流量,2015年使用cache抗流量。微信的金额什么时候算? 答:微信金额是拆的时候实时算出来,不是预先分配的,采用的是纯内存计算,不需要预算空间存储。。 采取实时计算金额的考虑:预算需要占存储,实时效率很高,预算才效率低。实时性:为什么明明抢到红包,点开后发现没有? 答:2014年的红包一点开就知道金额,分两次操作,先抢到金额,然后再转账。 2015年的...转载 2018-03-20 23:40:45 · 1481 阅读 · 0 评论 -
推荐:百亿级微信红包的高并发资金交易系统设计方案
2017年1月28日,正月初一,微信公布了用户在除夕当天收发微信红包的数量——142亿个,而其收发峰值也已达到76万每秒。百亿级别的红包,如何保障并发性能与资金安全?这给微信带来了超级挑战。面对挑战,微信红包在分析了业界“秒杀”系统解决方案的基础上,采用了SET化、请求排队串行化、双维度分库表等设计,形成了独特的高并发、资金安全系统解决方案。实践证明,该方案表现稳定,且实现了除夕夜系统零故障运行。...转载 2018-03-20 23:38:02 · 1819 阅读 · 0 评论 -
K8s + Istio 安装和配置例子: Bookinfo
说明:本文的K8S的版本是 v1.8.2, ISTIO v0.2.12。 服务网格简介服务网格(Service Mesh)是为解决微服务的通信和治理而出现的一种架构模式。服务网格将服务间通讯以及与此相关的管理控制功能从业务程序中下移到一个基础设施层,从而彻底隔离了业务逻辑和服务通讯两个关注点。采用服务网格后,应用开发者只需要关注并实现应用业务逻辑。服务之间的通信,包括服务发现,通讯...原创 2018-10-25 16:52:17 · 17926 阅读 · 0 评论 -
推荐:分布式系统理论基础 - CAP
引言CAP是分布式系统、特别是分布式存储领域中被讨论最多的理论,“什么是CAP定理?”在Quora 分布式系统分类下排名 FAQ 的 No.1。CAP在程序员中也有较广的普及,它不仅仅是“C、A、P不能同时满足,最多只能3选2”,以下尝试综合各方观点,从发展历史、工程实践等角度讲述CAP理论。希望大家透过本文对CAP理论有更多地了解和认识。CAP定理CAP由Eric Brewer在20...转载 2018-02-09 23:29:28 · 401 阅读 · 0 评论 -
推荐:分布式理论系列
从ACID到CAP到BASE2PC到3PC到Paxos到Raft到ISR复制、分片和路由副本更新策略负载均衡算法及手段RWN及Quorum与强一致性序本文主要讲述分布式系统开发的一些相关理论基础。一、ACID事务的四个特征:1、Atomic原子性事务必须是一个原子的操作序列单元,事务中包含的各项操作在一次执行过程中,要么全部执行成功,要么全部不执行,任何一项失败,整个事务回滚,只有全部都执行成功,...转载 2018-02-10 12:35:57 · 1419 阅读 · 0 评论 -
spark与storm的对比
spark与storm的对比对比点StormSpark Streaming实时计算模型纯实时,来一条数据,处理一条数据准实时,对一个时间段内的数据收集起来,作为一个RDD,再处理实时计算延迟度毫秒级秒级吞吐量低转载 2017-11-16 16:17:18 · 865 阅读 · 0 评论 -
推荐 kafka 简介、使用场景、设计原理、主要配置及集群搭建
问题导读:1.zookeeper在kafka的作用是什么?2.kafka中几乎不允许对消息进行“随机读写”的原因是什么?3.kafka集群consumer和producer状态信息是如何保存的?4.partitions设计的目的的根本原因是什么? 一、入门 1、简介 Kafka is a distr转载 2017-06-04 20:22:34 · 554 阅读 · 0 评论 -
如何正确理解CAP理论?
原文:http://www.jdon.com/bigdata/how-to-understand-cap.html 在大数据领域,被业界广泛谈及的CAP理论存在着一些关键性的认知误区,而只有全面地考察与分析分布式环境中的各种场景,我们才能真正正确地理解它。 目前,CAP(Consistency一致性、Availability可用性、Partition-toleranc转载 2017-10-29 23:45:47 · 345 阅读 · 0 评论 -
如何将本地代码上传至git仓库
首先我们在需要提交仓库或者下载代码的地方打开git bash命令,按照以下步骤依次进行git initgit remote add origin 仓库名git pull origin mastergit branch 自己新创建的分支名git checkout 自己新创建的分支名git add '文件夹或者文件名'git commit -a转载 2017-09-15 20:34:17 · 799 阅读 · 0 评论 -
23种设计模式全解析
一、设计模式的分类总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式转载 2017-08-23 16:21:31 · 516 阅读 · 0 评论 -
新浪微博架构
1 概述首先给大家介绍一下新浪微博架构发展的历程,新浪微博在短短一年时间内从零发展到五千万用户,我们的基层架构也发展了3个大的版本。 2 架构演变2.1 第一版LAMP架构第 一版就 LAMP架构,优点是可以非常快的实现我们的系统。我们看一下技术特点,微博这个产品从架构上来分析,它需要解决的是发表和订阅的问题。我们转载 2017-06-19 00:39:24 · 2846 阅读 · 0 评论 -
Tomcat + Nginx + 主从 memcached + keepalived 实现高可靠的web 服务
下面我将和大家分享一下: Tomcat的安装+配置memcached+NGINX+ repcache + keepalive。注意: 通过 repcache + keepalived,可以让两个memcache server running on Linux 实现 master / slave 功能。 1) repcache可以使者两个memcache自己自动同步数据,一旦ma原创 2016-05-04 16:03:43 · 1698 阅读 · 0 评论 -
keepalive安装配置
环境准备 系统需要的 LINUX 版本为:2.6.9‐5.ELsmp 需要的keepalived 版本为:1.1.20 ? 检查 LINUX版本 [root@test01 etc]# uname -r 2.6.9-5.ELsmp ? 检查 keepalived 版本 [root@test01 keepalived]# pwd /root/disk/keep转载 2016-04-07 01:07:42 · 5096 阅读 · 0 评论 -
Tomcat 配置详解/优化方案
Service.xmlServer.xml配置文件用于对整个容器进行相关的配置。元素:是整个配置文件的根元素。表示整个Catalina容器。属性:className:实现了org.apache.catalina.Server接口的类名,标准实现类是org.apache.catalina.core.StandardServer类。Port:Tomcat服务器监听用于关闭T转载 2016-04-02 17:17:55 · 666 阅读 · 0 评论 -
Nginx实战系列之功能篇----后端节点健康检查
公司前一段对业务线上的nginx做了整理,重点就是对nginx上负载均衡器的后端节点做健康检查。目前,nginx对后端节点健康检查的方式主要有3种,这里列出:1234561、ngx_http_proxy_module 模块和ngx_http_upstream_module模块(自带) 官网地址:http://nginx.转载 2016-04-02 13:36:07 · 1936 阅读 · 0 评论 -
Nginx深入详解之upstream分配方式
一、分配方式Nginx的upstream支持5种分配方式,下面将会详细介绍,其中,前三种为Nginx原生支持的分配方式,后两种为第三方支持的分配方式:1、轮询轮询是upstream的默认分配方式,即每个请求按照时间顺序轮流分配到不同的后端服务器,如果某个后端服务器down掉后,能自动剔除。upstream backend {server 192.168.1.101:8888;原创 2016-04-02 13:03:58 · 907 阅读 · 0 评论 -
搭建nginx+tomcat+Java的负载均衡环境
一、简介:Tomcat在高并发环境下处理动态请求时性能很低,而在处理静态页面更加脆弱。虽然Tomcat的最新版本支持epoll,但是通过Nginx来处理静态页面要比通过Tomcat处理在性能方面好很多。二、下载安装:下载nginxhttp://nginx.org/en/download.html下载解压后放到C:\nginx-1.0.4(官网这样要求的,不知转载 2016-04-02 12:40:45 · 644 阅读 · 0 评论 -
Nginx 下 安装nginx_upstream_jvm_route模块
一. nginx_upstream_jvm_route模块功能这个模块通过session cookie的方式来获取session粘性。如果在cookie和url中并没有session,则这只是个简单的round-robin 负载均衡。1. 一开始请求过来,没有带session信息,jvm_route就根据round robin的方法,发到一台tomcat上面。2. tomcat添加上s转载 2016-04-02 02:37:52 · 7273 阅读 · 0 评论 -
利用 Nginx session sticky功能实现NGINX + TOMCAT集群技术
cookie是怎样工作的? 例如,我们创建了一个名字为login的Cookie来包含访问者的信息,创建Cookie时,服务器端的Header如下面所示,这里假设访问者的注册名是“Michael Jordan”,同时还对所创建的Cookie的属性如path、domain、expires等进行了指定。 Set-Cookie:login=Michael Jordan;path=/;domai转载 2016-04-02 02:13:42 · 9537 阅读 · 0 评论 -
Spring 框架的设计理念与设计模式分析
这是一篇不错的文章,值得看看,点击下面的连接即可Spring 框架的设计理念与设计模式分析转载 2016-04-01 17:16:27 · 701 阅读 · 0 评论 -
数据库分片技术
假如您有一个应用程序,随着业务越来越有起色,系统所牵涉到的数据量也就越来越大,此时您要涉及到对系统进行伸缩(Scale)的问题了。一种典型的扩展方法叫做“向上伸缩(Scale Up)”,它的意思是通过使用更好的硬件来提高系统的性能参数。而另一种方法则叫做“向外伸缩(Scale Out)”,它是指通过增加额外的硬件(如服务器)来达到相同的效果。从“硬件成本”还是“系统极限”的角度来说,“向外伸缩”一转载 2016-03-30 02:30:04 · 1305 阅读 · 0 评论 -
LVS 三种负载均衡方式比较
1、什么是LVS? 首先简单介绍一下LVS (Linux Virtual Server)到底是什么东西,其实它是一种集群(Cluster)技术,采用IP负载均衡技术和基于内容请求分发技术。调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的、高可用的虚拟服务器。整个服务器集群的结构对客户是透明的,而且无需修改客户端和服转载 2016-03-29 23:36:11 · 545 阅读 · 0 评论