服务器集群

《大型网站技术架构》读书笔记之六:永无止境之网站的伸缩性架构

≯℡__Kan透↙ 提交于 2019-12-03 23:18:28
http://www.cnblogs.com/edisonchou/ 《大型网站技术架构》读书笔记之六:永无止境之网站的伸缩性架构 此篇已收录至 《大型网站技术架构》读书笔记系列目录 贴,点击访问该目录可获取更多内容。 首先,所谓网站的伸缩性,指 不需要改变网站的软硬件设计,仅仅通过改变部署的服务器数量就可以扩大或者缩小网站的服务处理能力 。在整个互联网行业的发展渐进演化中,最重要的技术就是 服务器集群 ,通过不断地向集群中添加服务器来增强整个集群的处理能力。 一、网站架构的伸缩性设计 1.1 不同功能进行物理分离实现伸缩   (1)纵向分离:将业务处理流程上得不同部分分离部署,实现系统的伸缩性;   (2)横向分离:将不同的业务模块分离部署,实现系统的伸缩性; 1.2 单一功通过集群规模实现伸缩   使用服务器集群,即将相同服务部署在多台服务器上构成一个集群整体对外提供服务。具体来说,集群伸缩性又分为应用服务器集群伸缩性和数据服务器集群伸缩性。这两种集群对于数据状态管理的不同,技术实现也有很大的区别。  It is said that 当一头牛拉不动车的时候,不要去寻找一头更强壮的牛,而是用两头牛来拉车 。 二、应用服务器集群的伸缩性设计 2.1 应用服务器那点必须知道的事儿   (1)应用服务器应该被设计成 无状态 的,即应用服务器不存储请求上下文信息;构建集群后

前后端分离是什么操作

丶灬走出姿态 提交于 2019-12-03 14:56:10
转 前后端分离已成为互联网项目开发的业界标准使用方式,通过nginx+tomcat的方式(也可以中间加一个nodejs)有效的进行解耦,并且前后端分离会为以后的大型分布式架构、弹性计算架构、微服务架构、多端化服务(多种客户端,例如:浏览器,车载终端,安卓,IOS等等)打下坚实的基础。这个步骤是系统架构从猿进化成人的必经之路。 核心思想是前端html页面通过ajax调用后端的restuful api接口并使用json数据进行交互。 在互联网架构中,名词解释: Web服务器:一般指像nginx,apache这类的服务器,他们一般只能解析静态资源。 应用服务器:一般指像tomcat,jetty,resin这类的服务器可以解析动态资源也可以解析静态资源,但解析静态资源的能力没有web服务器好。 一般都是只有web服务器才能被外网访问,应用服务器只能内网访问。 一、开发人员分离 以前的JavaWeb项目大多数都是Java程序员又当爹又当妈,又搞前端,又搞后端。 随着时代的发展,渐渐的许多大中小公司开始把前后端的界限分的越来越明确,前端工程师只管前端的事情,后端工程师只管后端的事情。正所谓术业有专攻,一个人如果什么都会,那么他毕竟什么都不精。 大中型公司需要专业人才,小公司需要全才,但是对于个人职业发展来说,小编建议是分开。 1.对于后端Java工程师: 把精力放在Java基础,设计模式

Docker部署Redis服务器集群

匿名 (未验证) 提交于 2019-12-03 00:43:02
1. 安装docker(来自官网) 参考:Docker开发环境搭建 2. 从docker库获取redis镜像 docker pull redis 3. 从docker库获取ruby镜像 docker pull ruby 4. 创建redis容器 #在/usr/local/src目录下创建redis-cluster文件夹并在redis-cluster文件夹下创建配置文件redis-cluster.conf cd /usr/local/src && mkdir redis-cluster && touch redis-cluster.conf 添加如下内容: port ${PORT} cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000 #对外ip cluster-announce-ip 10.200.215.65 cluster-announce-port ${PORT} cluster-announce-bus-port 1${PORT} appendonly yes 5. 创建自定义network(redis-net) docker network create redis-net 6. 在/usr/local/src/redis-cluster下生成conf和data目标

为什么要前后端分离?各有什么优缺点?

匿名 (未验证) 提交于 2019-12-03 00:27:02
前后端分离已成为互联网项目开发的业界标准使用方式,通过nginx+tomcat的方式(也可以中间加一个nodejs)有效的进行解耦,并且前后端分离会为以后的大型分布式架构、弹性计算架构、微服务架构、多端化服务(多种客户端,例如:浏览器,车载终端,安卓,IOS等等)打下坚实的基础。这个步骤是系统架构从猿进化成人的必经之路。 核心思想是前端html页面通过ajax调用后端的restuful api接口并使用json数据进行交互。 在互联网架构中,名词解释: Web服务器 :一般指像nginx,apache这类的服务器,他们一般只能解析静态资源。 应用服务器 :一般指像tomcat,jetty,resin这类的服务器可以解析动态资源也可以解析静态资源,但解析静态资源的能力没有web服务器好。 一般都是只有web服务器才能被外网访问,应用服务器只能内网访问。 以前的JavaWeb项目大多数都是java程序员又当爹又当妈,又搞前端,又搞后端。 随着时代的发展,渐渐的许多大中小公司开始把前后端的界限分的越来越明确,前端工程师只管前端的事情,后端工程师只管后端的事情。正所谓术业有专攻,一个人如果什么都会,那么他毕竟什么都不精。 大中型公司需要专业人才,小公司需要全才,但是对于个人职业发展来说,我建议是分开。 1、对于后端java工程师: 把精力放在java基础,设计模式,jvm原理,spring

服务器集群及优化

匿名 (未验证) 提交于 2019-12-03 00:18:01
高性能的服务器的架构设计 1方面,要减少请求 对于开发人员----合并css, 背景图片, 减少mysql查询等. 2: 对于运维 nginx的expires ,利用浏览器缓存等,减少查询. 3: 利用cdn来响应请求 4: 最终剩下的,不可避免的请求----服务器集群+负载均衡来支撑. 所以,来到第4步后,就不要再考虑减少请求这个方向了. 而是思考如何更好的响应高并发请求. 大的认识-------既然响应是不可避免的,我们要做的是把工作内容”平均”分给每台服务器. 最理想的状态 每台服务器的性能都被充分利用. 服务器介绍: 服务器IP: C 203 D204 Root: zixue.it 1̨ A RAM: 2G HD: 500G 3̨ B, C, D RAM: 8G 步骤: 1:A号服务器 注意:先把表中的索引去掉,加快导入速度 2: C号服务器: 3: D号服: 4: B号服: 编译nginx ,并配置 Cd /app/pcre-8.12 ./configure Make && make install Cd nginx-1.2.7 ./configure --prefix=/usr/local/nginx --add-module=/ app/ngx_http_consistent_hash-master 注:红线部分是nginx的第3方模块,需要自己下载. 安装统计模块

什么是负载均衡

匿名 (未验证) 提交于 2019-12-02 23:43:01
1.背景介绍 随着 Internet 的快速发展和业务量的不断提高,基于网络的数据访问流量迅速增长,特别是对数据 中心、大型企业以及门户网站等的访问,其访问流量甚至达到了 10Gb/s 的级别;同时,服务器网 站借助 HTTP、FTP、SMTP 等应用程序,为访问者提供了越来越丰富的内容和信息,服务器逐渐 被数据淹没;另外,大部分网站(尤其电子商务等网站)都需要提供不间断 24 小时服务,任何服 务中断或通信中的关键数据丢失都会造成直接的商业损失。所有这些都对应用服务提出了高性能和 高可靠性的需求。 但是,相对于网络技术的发展,服务器处理速度和内存访问速度的增长却远远低于网络带宽和应用 服务的增长,网络带宽增长的同时带来的用户数量的增长,也使得服务器资源消耗严重,因而服务 器成为了网络瓶颈。传统的单机模式,也往往成为网络故障点。针对以上情况的解决方案:(1) 服务器进行硬件升级:采用高性能服务器替换现有低性能服务器。 该方案的弊端:高成本:高性能服务器价格昂贵,需要高额成本投入,而原有低性能服务器被闲置,造成资 源浪费。可扩展性差:每一次业务量的提升,都将导致再一次硬件升级的高额成本投入,性能再卓越 的设备也无法满足当前业务量的发展趋势。无法完全解决现在网络中面临的问题:如单点故障问题,服务器资源不够用问题等。(2) 组建服务器集群,利用负载均衡技术在服务器集群间进行业务均衡

nginx高可用集群

白昼怎懂夜的黑 提交于 2019-12-02 16:26:43
1、配置: (1)需要两台nginx服务器 (2)需要keepalived (3)需要虚拟ip 2、配置高可用的准备工作 (1)需要两台服务器192.168.180.113和192.168.180.112 (2)在两台服务器安装nginx (3)在两台服务器安装keepalived 3、在两台服务器安装keepalived (1)使用yum命令进行安装 (2)安装之后,在etc里面生成目录keepalived,有文件keepalived.conf [root@topcheer dev]# yum install keepalived -y 已加载插件:fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirrors.cn99.com * epel: ftp.riken.jp * extras: mirrors.cn99.com * updates: mirror.lzu.edu.cn gitlab_gitlab-ce/x86_64/signature | 836 B 00:00:00 gitlab_gitlab-ce/x86_64/signature | 1.0 kB 00:00:00 !!! gitlab_gitlab-ce-source/signature | 836 B 00

Linux 软件及作用

旧巷老猫 提交于 2019-12-02 09:44:15
1.Cgi CGI全称是“公共网关接口”(Common Gateway Interface),HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工具,将web服务器和网页的执行程序连接到一起,其程序须运行在网络服务器上,apache调用时需每次都激活一次cgi,并且这种模式php不与服务器一起启动 2.Fastcgi 是一个可伸缩架构的cgi开放扩展,可以应用于各种编程语言,用来管理php的cgi进程,可以将cgi放置于内存中,不需要每次都激活cgi进程,提高解析性能,这种模式php与服务器一起启动 3.Php-fpm Php fastcgi 的进程管理器,可以根据访问压力动态唤起和销毁cgi进程,有效利用内存,可以平滑重载php配置php的进程管理如果php是汽车,打个比方:php-fpm就是车队,其中一个进程就是调度员,负责分配每辆车的任务。 参考: http://www.nowamagic.net/librarys/veda/detail/1319 4.Zendopcache 用于缓存php编译后的文件,比php自带的APC等缓存插件性能更加优异,使用它可以极大的提升php性能。原理:对php编译后的文件进行缓存,之后的调用直接调用缓存不必编译 5.Rpm Rpm是一款软件包管理工具,类似于360软件管理,它可以升级,卸载,安装管理软件,rpm包则是可执行的二进制文件

MySQLReplicaion的常用架构

霸气de小男生 提交于 2019-12-02 07:01:02
常规复制架构  Master - Slaves 在实际应用场景中,MySQL复制90%以上都是一个Master复制到一个或者多个Slave的架构模式,主要用于读压力比较大的应用的数据库端 廉价扩展解决方案。因为只要Master和Slave的压力不是太大(尤其是Slave端压力)的话,异步复制的延时一般都很少很少。尤其是自从 Slave端的复制方式改成两个线程处理之后,更是减小了Slave端的延时问题。而带来的效益是,对于数据实时性要求不是特别Critical的应用, 只需要通过廉价的pcserver来扩展Slave的数量,将读压力分散到多台Slave的机器上面,即可通过分散单台数据库服务器的读压力来解决数据库 端的读性能瓶颈,毕竟在大多数数据库应用系统中的读压力还是要比写压力大很多。这在很大程度上解决了目前很多中小型网站的数据库压力瓶颈问题,甚至有些大 型网站也在使用类似方案解决数据库瓶颈。 这个架构可以通过下图比较清晰的展示: 一个Master复制多个Slave的架构实施非常简单,多个Slave和单个Slave的实施并没有实质性的区别。在Master端并不Care 有多少个Slave连上了自己,只要有Slave的IO线程通过了连接认证,向他请求指定位置之后的BinaryLog信息,他就会按照该IO线程的要 求,读取自己的BinaryLog信息,返回给Slave的IO线程。

讨论Web前后端分离的意义

谁说胖子不能爱 提交于 2019-12-01 20:28:00
自然是有很大意义的。下面我可能说的比较多……方便题主能够更全面的了解为什么说是有有意义的。另外,本文是以Java的角度谈前后端分离。放心,大家一定会有种是我了,没错,的感觉。 一、先来明晰下概念   前后端分离是通过Ngnix+Tomcat的方式(也可以中间加一个Node.js)有效的进行解耦,并且前后端分离会为以后的大型分布式架构、弹性计算架构、微服务架构、多端化服务(多种客户端,例如:浏览器,车载终端,安卓,iOS等等)打下坚实的基础。这个步骤是系统架构从猿进化成人的必经之路。   它的核心思想是 前端HTML页面通过Ajax调用后端的Restful API接口并使用json数据进行交互。这点题主也有提到。 二、其次,让我们了解下,没有前后端分离的时代(各种耦合)   过去,Java Web项目大多数都是Java程序员又当爹又当妈,又搞前端,又搞后端。   感觉就是,怀疑猿生……   那时的JavaWeb项目都是使用了若干后台框架,Spring MVC/Struts + Spring + Spring JDBC/Hibernate/Mybatis 等等。   大多数项目在Java后端都是分了三层,控制层,业务层,持久层。控制层负责接收参数,调用相关业务层,封装数据,以及路由&渲染到JSP页面。然后JSP页面上使用各种标签或者手写Java表达式将后台的数据展现出来