服务器端架构

摘自于某位大神PPT

一、技术架构的演变及使用场景

  • 单一架构 ORM(对象关系映射)
  • 垂直应用架构 MVC
  • 分布式服务架构 RPC
  • 流动计算架构 SOA

  Tip: 图片中数字是指并发量

二、架构优化之路

  • 应用服务器与数据服务器分离
  • 应用服务器集群
  • 负载均衡

三、现主要针对负载均衡问题进行讨论:

负载均衡问题:

  1. 用户的请求由谁来转发到具体的应用服务器
  2. 有什么转发的算法
  3. 应用服务器如何返回用户的请求
  4. 用户如果每次访问到的服务器不一样,那么如何维护sesion的一致性

负载均衡解决方案:

  针对第一个问题:用户请求由谁来转发到具体的应用服务器

  1. HTTP重定向
  2. DNS域名解析
  3. 反向代理技术
  4. IP层负载均衡
  5. 数据链路层负载均衡

  转发算法

  1. RR(轮询)
  2. WRR(加权轮询)
  3. SH(源地址散列)
  4. DH(目标地址散列)
  5. LC(最少链接)
  6. WLC(加权最少链接)
  7. SED(最短期望延迟)
  8. NQ(永不排队)
  9. LBLC(基于局部性的最少连接)
  10. LBLCR(带赋值的基于局部性的最少连接)

  集群模式相关问题(以下三种模式,具体了解可根据这个链接 http://www.linuxidc.com/Linux/2012-09/71340.htm 额 研究的话我就算了,我只负责记录)

  1. NAT(网络地址转换)
  2. DR
  3. TUN

  针对之上提到的转发算法和集群模式,我们只需要了解即可,因为已有现有服务器本身就支持,所以我们可根据自己的需要,选择适合自己的就好。

  • nginx目录支持的负载均衡算法有wrr、sh(支持一致性哈希)、fair。但nginx作为均衡器的话,还可以一同作为静态资源服务器。
  • keepalived+ipvsadm比较强大,目前支持的算法有:rr、wrr、lc 、wlc、 lblc、 sh、 dh
  • keepalived支持集群模式有:NAT DR TUN

  如何保证session共享

  • Session Sticky
  • Session Replication
  • Session集中存储
  • 基于cookie

四、

  a) 架构优化之路-带负载均衡的架构

    

  b) 架构优化之路-用搜索引擎缓解读库的压力

    

  c) 架构优化之路-用缓存缓解读库的压力

    

  d) 架构优化之路-数据库水平拆分与垂直拆分

  例子如下(从网上盗用):

  摘:

  数据库水平拆分和垂直拆分区别(以mysql为例)

  案例:

      简单购物系统暂设涉及如下表:

  1.产品表(数据量10w,稳定)

  2.订单表(数据量200w,且有增长趋势)

  3.用户表 (数据量100w,且有增长趋势)

  以mysql为例讲述下水平拆分和垂直拆分,mysql能容忍的数量级在百万静态数据可以到千万

  垂直拆分:

  解决问题:

  表与表之间的io竞争

  不解决问题:

  单表中数据量增长出现的压力

  方案:

  把产品表和用户表放到一个server上

  订单表单独放到一个server上

  

  水平拆分:

  解决问题:

  单表中数据量增长出现的压力

  不解决问题:

  表与表之间的io争夺

  

  方案:

  用户表通过性别拆分为男用户表和女用户表

  订单表通过已完成和完成中拆分为已完成订单和未完成订单

  产品表 未完成订单放一个server上

  已完成订单表盒男用户表放一个server上

  女用户表放一个server上(女的爱购物 哈哈)

  e) 架构优化之路-应用拆分

  f) 架构优化之路-引入消息中间件

五、开发框架介绍:

常用开发框架说明:

SSM springmvc spring mybatis

SSH struts2+Spring+hibernate

时间: 2024-11-11 02:24:22

服务器端架构的相关文章

微信牛牛平台制作服务器端架构概述

微信牛牛平台制作服务器端架构概述,平台制作教程联系QQ:212303635,官方网站(aqiulian.com) 架构的分析模型 一. 讨论的背景 现代电子游戏,基本上都会使用一定的网络功能.从验证正版,到多人交互等等,都需要架设一些专用的服务器,以及编写在服务器上的程序.因此,游戏服务器端软件的架构,本质上也是游戏服务器这个特定领域的软件架构. 软件架构的分析,可以通过不同的层面入手.比较经典的软件架构描述,包含了以下几种架构: 运行时架构--这种架构关心如何解决运行效率问题,通常以程序进程图

网络游戏服务器端架构设计

一款大型的网游的开发主要由游戏策划,服务器端,客户端,美工,游戏测试,用户体验等几部分组成,其中服务器端的开发绝对是一个程序员大展身手的地方.只要你崇拜技术,热爱编程,在服务器端开发的世界里就有你的光芒.下面谈一谈服务器端的整体架构. 服务器端的整体架构如上图所示,首先,auth就是玩家的登录界面,玩家输入用户名和密码之后,auth就会直接去AccountDB验证账户的合法性.然后,如果用户通过验证,auth就会将玩家带到服务器选择界面(例如第二大二区的xxx服务器).之后,SceneManag

C/S和B/S两种架构区别与优缺点分析

C/S和B/S,是再普通不过的两种软件架构方式,都可以进行同样的业务处理,甚至也可以用相同的方式实现共同的逻辑.既然如此,为何还要区分彼此呢?那我们就来看看二者的区别和联系. 一.C/S 架构 1. 概念 C/S 架构是一种典型的两层架构,其全程是Client/Server,即客户端服务器端架构,其客户端包含一个或多个在用户的电脑上运行的程序,而服务器端有两种,一种是数据库服务器端,客户端通过数据库连接访问服务器端的数据:另一种是Socket服务器端,服务器端的程序通过Socket与客户端的程序

基于Android的简单聊天工具-服务器端

1.数据库用的mysql,一共有3张表,一张用户表user.一张朋友列表friend和一张消息表message. 1 User table 用户表 uid 主键自动生成 userName 昵称 userPwd 密码 userSex 性别 userPho 用户头像,有默认头像 2 Friend table 好友列表 fid 主键自动生成 uid --> fk 用户id,外键 fuid --> 朋友的id fName 好友名称 3 Messages table 消息表 mid 消息id,主键自动生

C/S与B/S架构的区别和优缺点

C/S 架构的概念 C/S是Client/Server,即客户端/服务器端架构,一种典型的两层架构. 客户端包含一个或多个在用户的电脑上运行的程序 服务器端有两种,一种是数据库服务器端,客户端通过数据库连接访问服务器端的数据:另一种是Socket服务器端,服务器端的程序通过Socket与客户端的程序通信. C/S 可以看做是胖客户端架构 因为客户端需要实现绝大多数的业务逻辑和界面展示.作为客户端的部分需要承受很大的压力,因为显示逻辑和事务处理都包含在其中, 通过与数据库的交互(通常是SQL或存储

你知道C/S和B/S两种架构有什么区别吗?

C/S和B/S,是再普通不过的两种软件架构方式,都可以进行同样的业务处理,甚至也可以用相同的方式实现共同的逻辑.既然如此,为何还要区分彼此呢?那我们就来看看二者的区别和联系. 一.C/S 架构         1. 概念 C/S 架构是一种典型的两层架构,其全程是Client/Server,即客户端服务器端架构,其客户端包含一个或多个在用户的电脑上运行的程序,而服务器端有两种,一种是数据库服务器端,客户端通过数据库连接访问服务器端的数据:另一种是Socket服务器端,服务器端的程序通过Socke

C/S与B/S架构 区别·与优点

C/S和B/S,是再普通不过的两种软件架构方式,都可以进行同样的业务处理,甚至也可以用相同的方式实现共同的逻辑.既然如此,为何还要区分彼此呢?那我们就来看看二者的区别和联系. 一.C/S 架构 1. 概念 C/S 架构是一种典型的两层架构,其全程是Client/Server,即客户端服务器端架构,其客户端包含一个或多个在用户的电脑上运行的程序,而服务器端有两种,一种是数据库服务器端,客户端通过数据库连接访问服务器端的数据:另一种是Socket服务器端,服务器端的程序通过Socket与客户端的程序

登录界面 Andriod简单http get请求(含服务器端)三

本文为服务器端架构,讲之前,友情提示:记得将客户端 的  Internet权限打开. 客户端采用servlet 3.0搭建不需要再web.xml中进行配置 本文做的功能简单获取到客户端发送过来的username和password即可. 项目结构图: 代码如下get 方法放到post方法处理: protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException,

软件开发架构、网络基础知识、osi七层模型

一.软件开发的架构 涉及到两个程序之间通讯的应用大致可以分为两种: 第一种是应用类:qq.微信.网盘.优酷这一类是属于需要安装的桌面应用 第二种是web类:比如百度.知乎.博客园等使用浏览器访问就可以直接使用的应用 这些应用的本质其实都是两个程序之间的通讯.而这两个分类又对应了两个软件开发的架构 C/S架构: C/S即:Client与Server ,中文意思:客户端与服务器端架构,这种架构也是从用户层面(也可以是物理层面)来划分的. 这里的客户端一般泛指客户端应用程序EXE,程序需要先安装后,才