架构
yongche_shi
这个作者很懒,什么都没留下…
展开
-
通向架构师的道路(第三天)之apache性能调优
一、总结前一天的学习在前两天的学习中我们知道、了解并掌握了Web Server结合App Server实现单向Https的这样的一个架构。这个架构是一个非常基础的J2ee工程上线布署时的一种架构。在前两天的教程中,还讲述了Http服务器、App Server的最基本安全配置(包括单向https的实现), 它只是避免了用户可以通过浏览器侵入我们的Web访问器或者能够通过Web浏览器来查询我们转载 2014-07-09 10:29:06 · 522 阅读 · 0 评论 -
关于大型网站技术演进的思考(二)--存储的瓶颈(2)
上篇里我讲到某些网站在高并发下会报出503错误,503错误的含义是指网站服务端暂时无法提供服务的含义,503还表达了网站服务端现在有问题但是以后可能会提供正常的服务,对http协议熟悉的人都知道,5开头的响应码表达了服务端出现了问题,在我们开发测试时候最为常见的是500错误,500代表的含义是服务端程序出现了错误导致网站无法正常提供服务,500通常是服务端异常和错误所致,如果生产系统里发现了500转载 2015-08-26 15:08:52 · 598 阅读 · 0 评论 -
关于大型网站技术演进的思考(五)--存储的瓶颈(5)
上文里我遗留了两个问题,一个问题是数据库做了水平拆分以后,如果我们对主键的设计采取一种均匀分布的策略,那么它对于被水平拆分出的表后续的查询操作将有何种影响,第二个问题就是水平拆分的扩容问题。这两个问题在深入下去,本系列就越来越技术化了,可能最终很多朋友读完后还是没有找到解决实际问题的启迪,而且我觉得这些问题都是像BAT这样巨型互联网公司才会认真思考的,因此本篇我打算换个角度来阐述本文的后续内容。转载 2015-08-26 16:02:30 · 359 阅读 · 0 评论 -
关于大型网站技术演进的思考(六)--存储的瓶颈(6)
在讲数据库水平拆分时候,我列出了水平拆分数据库需要解决的两个难题,它们分别是主键的设计问题和单表查询的问题,主键问题前文已经做了比较详细的讲述了,但是第二个问题我没有讲述,今天我将会讲讲如何解决数据表被水平拆分后的单表查询问题。 要解决数据表被水平拆分后的单表查询问题,我们首先要回到问题的源头,我们为什么需要将数据库的表进行水平拆分。下面我们来推导下我们最终下定决心做水平拆分表的演进过程转载 2015-08-26 16:16:49 · 301 阅读 · 0 评论 -
关于大型网站技术演进的思考(三)--存储的瓶颈(3)
存储的瓶颈写到现在就要进入到深水区了,如果我们所做的网站已经到了做数据库垂直拆分和水平拆分的阶段,那么此时我们所面临的技术难度的挑战也会大大增强。 这里我们先回顾下数据库的垂直拆分和水平拆分的定义: 垂直拆分:把一个数据库中不同业务单元的数据分到不同的数据库里。 水平拆分:是根据一定的规则把同一业务单元的数据拆分到多个数据库里。 垂直拆分是一个粗粒度的拆分数转载 2015-08-26 15:21:46 · 325 阅读 · 0 评论 -
关于大型网站技术演进的思考(一)--存储的瓶颈(1)
前不久公司请来了位互联网界的技术大牛跟我们做了一次大型网站架构的培训,两天12个小时信息量非常大,知识的广度和难度也非常大,培训完后我很难完整理出全部听到的知识,今天我换了个思路是回味这次培训,这个思路就是通过本人目前的经验和技术水平来思考下大型网站技术演进的过程。 首先我们要思考一个问题,什么样的网站才是大型网站,从网站的技术指标角度考虑这个问题人们很容易犯一个毛病就是认为网站的访问量转载 2015-08-26 14:47:49 · 517 阅读 · 0 评论 -
关于大型网站技术演进的思考(四)--存储的瓶颈(4)
如果数据库需要进行水平拆分,这其实是一件很开心的事情,因为它代表公司的业务正在迅猛的增长,对于开发人员而言那就是有不尽的项目可以做,虽然会感觉很忙,但是人过的充实,心里也踏实。 数据库水平拆分简单说来就是先将原数据库里的一张表在做垂直拆分出来放置在单独的数据库和单独的表里后更进一步的把本来是一个整体的表进一步拆分成多张表,每一张表都用独立的数据库进行存储。当表被水平拆分后,原数据表成为了转载 2015-08-26 15:38:53 · 297 阅读 · 0 评论 -
标准Web系统的架构分层
标准Web系统的架构分层– 转载请注明出处1、架构体系分层图在上图中我们描述了Web系统架构中的组成部分。并且给出了每一层常用的技术组件/服务实现。需要注意以下几点:系统架构是灵活的,根据需求的不同,不一定每一层的技术都需要使用。例如:一些简单的CRM系统可能在产品初期并不需要K-V作为缓存;一些系统访问量不大,并且可能只有一台业务服务器存在,所以不转载 2015-07-20 13:49:48 · 1161 阅读 · 0 评论 -
创业公司工程师应该掌握的可伸缩Web开发技术
近些年来,越来越多的行业开始和互联网结合,诞生了越来越多的互联网创业公司。互联网创业公司需要面对许多的不确定因素。如果你和你的小伙伴们够幸运,你们的公司可能会在几个星期之内让用户数、商品数、订单量增长几十倍上百倍。一次促销可能会带来平时几十倍的访问流量,一次秒杀活动可能会吸引平时数百倍的访问用户。这对公司自然是极大的好事,说明产品得到认可,公司未来前景美妙。但是快速增长的用户和订单却对公司转载 2015-11-04 18:22:05 · 577 阅读 · 0 评论 -
面向业务的立体化高可用架构设计
通常情况下我们在谈论高可用架构设计的时候,主要关注的是系统结构的高可用,例如主备架构、集群架构、多中心架构。我们做架构设计的时候,也主要是从系统结构本身出发,例如我们把单机改为双机、双机改为集群、单机房改为异地多机房等等。这种以系统结构为目标的高可用架构设计,更多的是从技术角度出发,但其实我们都知道,无论技术多先进,架构多强大,都不可能保证100%不出问题的。蓝翔的挖掘机一铲子下去,支付宝转载 2015-11-04 18:23:05 · 925 阅读 · 0 评论 -
Nginx/LVS/HAProxy负载均衡软件的优缺点详解
PS:Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡软件,本人都在多个项目中实施过,参考了一些资料,结合自己的一些使用经验,总结一下。一般对负载均衡的使用是随着网站规模的提升根据不同的阶段来使用不同的技术。具体的应用需求还得具体分析,如果是中小型的Web应用,比如日PV小于1000万,用Nginx就完全可以了;如果机器不少,可以用DNS轮询,LVS所耗费的机器还是比较多的转载 2015-10-09 10:55:28 · 515 阅读 · 0 评论 -
lvs & keepalived的tcp 长连接的问题解决办法
虽然应用keepalived搞定了后端服务负载均衡和高可用性问题,但是在具体应用的时候,还是要注意很多问题。很多应用都用tcp或者http的长连接,因为建立tcp连接或者http连接开销比较大,而应用端其实是需要频繁跟server端通讯的,这时候保持长连接无疑是非常合适的。经过摸索, lvs & keepalived 长连接的配置主要在三个地方:client端的SoTimeout,转载 2015-10-09 12:25:23 · 9596 阅读 · 0 评论 -
如何构建高可用和可伸缩的架构?
主讲人:七牛首席架构师李道兵嘉宾简介:李道兵(新浪微博 @lidaobing, 个人博客:http://blog.lidaobing.com/),七牛首席架构师,Debian开发者,ISO-Codes等开源软件维护者,python-lunardate、apistrano-scm-jenkins作者,原盛大云资深研究员。关注服务安全、架构健壮性(高可用、可测试、可追溯)等领域,参与了多个高压转载 2015-09-23 12:00:58 · 1128 阅读 · 1 评论 -
ZooKeeper典型应用场景一览
官方网站:http://zookeeper.apache.org/ZooKeeper是一个高可用的分布式数据管理与系统协调框架。基于对Paxos算法的实现,使该框架保证了分布式环境中数据的强一致性,也正是基于这样的特性,使得ZooKeeper解决很多分布式问题。网上对ZK的应用场景也有不少介绍,本文将结合作者身边的项目例子,系统地对ZK的应用场景进行一个分门归类的介绍。值得转载 2016-05-27 14:10:55 · 819 阅读 · 0 评论 -
服务架构及单点故障导致系统雪崩探讨
很多大型网站都是从小型网站发展而来,一开始的架构都比较简单,随着业务复杂和用户量的激增,才开始做很多架构上的改进。当它还是小型网站的时候,没有太多访客,一般来讲只需要一台服务器就够了,这时应用程序、数据库、文件等所有资源都在一台服务器上,具体架构如下图所示: 随着网站业务的发展和用户量的增加,单台服务器就无法再满足需求了。大量用户访问导致访问速度越来越慢,而逐渐增加转载 2017-03-06 10:39:37 · 3818 阅读 · 1 评论 -
深入浅出 RPC - 浅出篇
本文来自本人独立博客,为获得更佳阅读体验,请点击 这里----------------------------------------------------------------------------------------------------近几年的项目中,服务化和微服务化渐渐成为中大型分布式系统架构的主流方式,而 RPC 在其中扮演着关键的作用。在平时的日常开转载 2015-04-25 11:19:05 · 740 阅读 · 0 评论 -
深入浅出 RPC - 深入篇
本文来自本人独立博客,为获得更佳阅读体验,请点击 这里----------------------------------------------------------------------------------------------------《深入篇》我们主要围绕 RPC 的功能目标和实现考量去展开,一个基本的 RPC 框架应该提供什么功能,满足什么要求以及如何转载 2015-04-25 11:28:09 · 450 阅读 · 0 评论 -
谈谈开源技术选型
有时感觉技术选型就像个伪命题,胜出的技术占据绝对的主流,就像 java 领域中 ejb 被 ssh/ssi 框架取代。 大部分项目使用近似的模式搭建,选型在工程中变得似乎可有可无。 时间上胜出的开源技术帮助开发者在客观上做出了选择,我们先了解下影响选型的客观因素。客观因素客观因素包括如下:1. 广泛性我们都倾向于选择更广泛应用的开源技术以规避未知性风险。转载 2015-04-24 20:27:36 · 688 阅读 · 0 评论 -
通向架构师的道路(第四天)之Tomcat性能调优-让小猫飞奔
一、总结前一天的学习从“第三天”的性能测试一节中,我们得知了决定性能测试的几个重要指标,它们是:ü 吞吐量ü Responsetimeü Cpuloadü MemoryUsage我们也在第三天的学习中对Apache做过了一定的优化,使其最优化上述4大核心指标的读数,那么我们的Apache调优了,我们的Tomcat也作些相应的调整,当完转载 2014-07-09 10:47:26 · 485 阅读 · 0 评论 -
通向架构师的道路(第五天)之tomcat集群-群猫乱舞
一、为何要集群单台App Server再强劲,也有其瓶劲,先来看一下下面这个真实的场景。当时这个工程是这样的,tomcat这一段被称为web zone,里面用spring+ws,还装了一个jboss的规则引擎Guvnor5.x,全部是ws没有service layer也没有dao layer。然后App Zone这边是weblogic,传输用的是spri转载 2014-07-09 10:58:37 · 460 阅读 · 0 评论 -
通向架构师的道路(第一天)之Apache整合Tomcat
一、先从J2EE工程的通用架构说起这是一个通用的Web即B/S工程的架构,它由:ü Web Serverü App Serverü DB Server三大部分组成,其中:² Web Server置于企业防火墙外,这个防火墙,大家可以认为是一个CISCO路由器,然后在CISCO路由器上开放了两个端口为:80和4转载 2014-07-09 09:18:35 · 596 阅读 · 0 评论 -
通向架构师的道路(第二天)之apache tomcat https应用
一、总结前一天的学习在前一天的学习中我们知道、了解并掌握了Web Server结合App Server是怎么样的一种架构,并且亲手通过Apache的Http Server与Tomcat6进行了整合的实验。这样的架构的好处在于:ü 减轻App Server端的压力,用Web Server来分压,即Web Server只负责处理静态HTML内容,而App Server专职负转载 2014-07-09 09:31:22 · 468 阅读 · 0 评论 -
通向架构师的道路(第六天)之漫谈基于数据库的权限系统的设计
一、权限系统这一天将讲述一个基本的基于数据库的权限管理系统的设计,在这一天的课程的最后将讲述“左右值无限分类实现算法”如何来优化“系统菜单”的结构而告终。今天的内容和前几天的基础框架是一样的它们都属于基础知识,在这些基础知识上还可以扩展出无数的变种与进化设计。二、先来看客户的一个需求2.1 用户实际需求1. 所有的用户、角色可动态配置2. 所转载 2014-07-09 13:28:45 · 715 阅读 · 0 评论 -
通向架构师的道路(第九天)之weblogic的集群与配置
一、Weblogic的集群还记得我们在第五天教程中讲到的关于Tomcat的集群吗?两个tomcat做node即tomcat1, tomcat2,使用Apache HttpServer做请求派发。现在看看WebLogic的集群吧,其实也差不多。区别在于:² Tomcat的集群的实现为两个物理上不同的tomcat,分别就是两个nod转载 2014-07-10 09:34:21 · 394 阅读 · 0 评论 -
通向架构师的道路(第八天)之weblogic与apache的整合与调优
一、BEAWeblogic的历史BEA WebLogic是用于开发、集成、部署和管理大型分布式Web应用、 网络应用和数据库应 用的Java应用服务器。将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的 开发、集成、部署和管理之中。 BEA WebLogic Server拥有处理关键Web应用系统问题所需的性能 、可扩展性和高可用性。转载 2014-07-10 09:24:22 · 597 阅读 · 0 评论 -
浅谈 SOAP
一:为什么需要SOAP?随着计算机技术的不断发展,现代企业面临的环境越来越复杂,其信息系统大多数为多平台、多系统的复杂系统。这就要求今天的企业解决方案具有广泛的兼容能力,可以支持不同的系统平台、数据格式和多种连接方式,要求在Internet 环境下,实现系统是松散耦合的、跨平台的,与语言无关的,与特定接口无关的,而且要提供对Web 应用程序的可靠访问。随着异种计算环境的不断增加,各转载 2014-07-10 09:57:04 · 782 阅读 · 0 评论 -
通向架构师的道路(第七天)之漫谈使用ThreadLocal改进你的层次的划分
一、什么是ThreadLocal早在JDK 1.2的版本中就提供java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序。ThreadLocal很容易让人望文生义,想当然地认为是一个“本地线程”。其实,ThreadLocal并不是一个Thread,而是Thread的局部变量,也许转载 2014-07-10 08:54:19 · 465 阅读 · 0 评论 -
Spring AOP 实现原理与 CGLIB 应用
AOP(Aspect Orient Programming),作为面向对象编程的一种补充,广泛应用于处理一些具有横切性质的系统级服务,如事务管理、安全检查、缓存、对象池管理等。AOP 实现的关键就在于 AOP 框架自动创建的 AOP 代理,AOP 代理则可分为静态代理和动态代理两大类,其中静态代理是指使用 AOP 框架提供的命令进行编译,从而在编译阶段就可生成 AOP 代理类,因此也称为编译时增强转载 2014-07-10 09:20:17 · 599 阅读 · 0 评论 -
WebSocket初探
众所周知,socket是编写网络通信应用的基本技术,网络数据交换大多直接或间接通过socket进行。对于直接使用socket的客户端与服务端,一旦连接被建立则均可主动向对方传送数据,而对于使用更上层的HTTP/HTTPS协议的应用,由于它们是非连接协议,所以通常只能由客户端主动向服务端发送请求才能获得服务端的响应并取得相关的数据。而当前越来越多的应用希望能够及时获取服务端提供的数据,甚至希望能够达转载 2014-07-10 13:37:23 · 652 阅读 · 0 评论 -
千万级图片资源存储、裁剪方案
目标搭建千万级图片资源存储服务,方便快捷切割所需高宽以及精度图片。方案利用fastdfs做文件分布式存储;lighttpd结合imagemagic扩展开发,支持通过HTTP请求传入高宽以及精度截取需要的图片;外加varnish文件缓存。即,如原图为:http://xxx/group1/M00/00/00/1.jpg通过链接 http://xxx/group1转载 2014-11-23 14:04:55 · 764 阅读 · 0 评论 -
微信、陌陌 架构方案分析
微信、陌陌 架构方案分析近两年、手机应用,莫过于微信、陌陌之类最受欢迎;但实现原理,分享文章甚少。故,提出两种方案,供分享;不对之处,敬请留言学习。目标解决大型应用(微信、陌陌级别)中,用户经纬度在不断更新,用户查找频繁的问题。(每分钟1000W级)=============================================================转载 2014-11-23 14:01:50 · 1557 阅读 · 0 评论 -
学在腾讯:简而美的微信后台架构
2013-10-23 WedBy youngsterxyf注:公司分享讲座的一点笔记,不保证准确性。问题极致的业务特性流畅的消息收发及时的通知省电省流量瘦客户端困难的后台-终端同步同步多样数据:账户信息、通讯录、消息、朋友圈等及时通知与同步移动网络下的可靠同步省流量与电量方案转载 2014-11-27 14:58:22 · 1040 阅读 · 0 评论 -
服务器升级带来的问题
系统环境: CentOS release 6.8 8核16G使用的服务:nginx+uwsgi+celery+redis+mysql+mongo由于业务的需要,升级到16核32G, 升级后启动服务报错:can't start new thread。开始一直以为是程序的问题, 经过各种搜索,修改,问题依旧。 后来发现原来是系统设置的问题, 我们是在非root用户下启动的服务。root用...原创 2018-11-09 22:32:28 · 1029 阅读 · 0 评论