互联网系统的通用架构笔记

接入层session设计原则:

1、Session—读写请求使用的上下文对象,称之会话。

业务总有状态的:用户下单购买、登录状态、好友状态、消息发送情况等;

这些有状态的信息随用户操作变化。

单机环境下:

  1. 不存在session共享问题;
  2. 处理简单;
  3. session保存在内存;
  4. 高可用不能保证(进程挂掉、宕机、session丢失不可用)。

集群设计:

--session复制:

所有接入层服务器之间同步session数据;

每台接入服务器都保存用户全量的session数据;

用户只需访问一台机器,获取速度快;

高可用保障:宕机部分机器,没影响。

问题:

--适用于接入层集群较少,不适量大量上千台接入层服务器;

--大量session复制,占用服务器和网络资源;

--存储全量用户session,内存占用量太大,甚至有可能溢出;

大型设计:

session绑定:

根据用户请求(UID\Mac\imei等唯一标示)负载均衡到特定接入层服务务器;

部分网站使用;

高可用如何保障:单点问题、复制机制(master-slave)

多机设计:

客户端保持 session:

--session由服务端生成,存储到客户端;

--每次请求携带客户端session;

--服务端若有更新返回给客户端存储;

C/S:

--APPS:记录到Native中;

B/S:

--Web:记录到Cookie中。

缺点:

Web Cookie记录信息大小限制(如100KB);

每次请求都要传输session:流量、性能受影响;

用户关闭、清理掉session,用户请求不正常;

优点:

方案简单,支持服务端的无缝伸缩;

方案可用性高;

较多网站使用;

Session高可用集群:

--接入层无状态化;

--统一的高可用session分布式读写服务器集群;

--状态分离:

接入层本身无状态;

session集群有状态:

分布式缓存(NoSQL—memcached/Redis, RDBMS—Mysql/MongoDB)

接入层安全性:

接入层是客户端和服务端的Interface;

数据安全重要性不言而喻;

保证数据安全性:连接通道加密、传输数据加密。

客户端与服务端建立安全信道—技术方案:

所有请求数据都加密,提高效率;使用对称加密算法;

对称加密密钥使用非对称加密算法经过两次协商确定;

安全信道的建立必须满足:

任何第三方无法伪造服务器;

在破解客户端代码的情况下,即使截获其他用户发送的加密请求也无法解密。

使用HTTPS:

数据安全的加密;

不推荐单向加密;使用双向加密(安全)

客户端证书

数据加密目的:

解决数据明文的问题;

即使截获也无法解密;

无法保证数据篡改;

如何保证数据正确性:

数据签名:双方约定规则签名(md5sum、其他)

过程:

  1. 客户端按照约定签名;
  2. 服务端收到数据,按照规则生成md5sum值;
  3. 和数据包里md5sum值比较是否一致;
  4. 一致说明没问题;不一致则说明被改

高可用接入层最佳实践:

模块与数据分离;

session绑定:每个session同步复制;

时间: 2024-11-05 06:37:09

互联网系统的通用架构笔记的相关文章

互联网系统运营部署,维护

本人不是专职的运维人员, 本文将自己理解的运维技术知识做个梳理.以便 自己记忆和回顾. 现在的 互联网系统是越来越复杂,而且要求系统  7x24 小时不阶段的运作. 对于大型的互联网公司,系统更是错综复杂. 越复杂的系统,越要求简单的耦合, 能够最小化的切分. 统一输入输出, 这样系统才能做的庞大,而不显的复杂.而 且需要能够方便的水平的扩容. 一般系统架构都是随着业务,慢慢的迭代,不断重新架构适应扩张.按照我的理解 是农村的小路不要按照单向 4 车道来修. 而作为江浙沪的高速, 就不能按照单向

以属性为核心驱动的 全领域通用架构设计原理 (简称:属性架构原理)

以属性为核心驱动的全领域通用架构设计原理 (简称:属性架构原理) 联系方式:13547930387 Email:[email protected] 一.个人声明 我,参加工作也有5年多了,是一名普通的不能在普通的程序员,一直在使用公司自己的产品进行开发,因此技术比较菜,此设计完全是按照自己天真的想法而设计的,如果有不合理或很搞笑的地方,请轻拍,由衷的希望大家能提出宝贵的意见: 根据此设计原理我也做了一个简单的(demo)架构来支撑和验证此理论的可行性,由于技术功底不太好,有不合理之处请大家谅解,

css通用小笔记02——浮动、清除(三个例子)

css中通常会用到浮动与清除,也是一个必须掌握的知识点,概念性的东西不多说,下面举几个例子,来说明它的用法:1.文字环绕效果  2.多个div并排显示 3.清除浮动(默认显示) 一.文字环绕效果: html代码如下: 1 <body> 2 3 <style type="text/css"> 4 #big img {float: left;padding: 10px;border: 1px solid red;} 5 #big span {font-size: 2

css通用小笔记03——浏览器窗口变小 div错位的问题

我最近写网页的时候,经常碰到一个普遍的问题,经过我的查阅和尝试,终于解决了这一问题,这里有两种方法提供给大家,如果博友还有更好的方法,欢迎补充. 一.使用min-width属性: 我们先看看下面这段代码(html): 1 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 2 <head> 3 <title>无标题文档</

智慧能源互联网系统建设能耗监测大数据平台开发

智慧能源互联网系统建设能耗监测大数据平台开发构建多能互补的能源互联网,是解决能源安全.环境污染和气候变化的重大举措,是世界能源发展的必然趋势,是安全.清洁.高效.可持续发展的必由之路.智能电网与能源互联网创新服务平台建设,以四川为例,一是促进了相关新技术和实用技术在能源互联网的应用.项目形成了非接触式三维磁场测量仪.智能电网智能变电站二次系统测试系统.交流充电桩.智能楼宇管理系统.电力大数据分析平台等系列产品:二是项目通过将智能电网与能源互联网相结合,在设备的自动化程度非常高的前提下,融入智能控

029.[转] SSO单点登录的通用架构实现

单点登录的通用架构实现 pphh发布于2018年4月26日 http://www.hyhblog.cn/2018/04/26/single_sign_on_arch/ 目录 1. 什么是单点登录 2. 用户登录 2.1 认证方式 2.2 授权方式 2.3 第一方登录架构实现 2.4 第三方登录架构实现 2.5 第一方登录和第三方登录的授权区别 2.6 登录架构实现小结 3. 权限控制 3.1 分布式鉴权架构 3.2 集中式鉴权架构 3.3 分布式和集中式鉴权的优缺点 3.4 访问控制的粒度 3.

在非洲运营互联网系统-自建短信猫踩的坑

?短信,是我们在非洲运营系统唯一需要本地化考虑的模块,之前写<在非洲运营互联网系统-基础建设>也介绍了部分短信建设的历程,目前我们的短信方案已经成熟,这里专门分享一下,可能不是最优方案,但还是可以供相互借鉴. 2018年12月份前,我们是采用的自建短信设备完成销售用户短信通知,期间也尝试找当地运营商渠道,并没有实质性的进展.同时第三方服务商的报价也结合预计业务量算了下,非常不划算(和自建单价对比).自建过程中也一直在想其他方案. 下图是我在去非洲考察前,在淘宝买的可以插单张SIM卡的短信设备(

通用 CSS 笔记、建议与指导

在参与规模庞大.历时漫长且人手众多的项目时,所有开发者遵守如下规则极为重要: + **保持 CSS 的可维护性** + **保持代码清晰易懂** + **保持代码的可拓展性** 为了实现这一目标,我们要采用诸多方法. 本文档第一部分将探讨语法.格式以及 CSS 分析:第二部分将从方法论.思维框架以及编写与规划 CSS 的态度入手. ## 目录 * CSS 文档分析 * 总览 * 单一文件与多文件 * 目录 * 章节标题 * 代码顺序 * 规则解析 * 命名规范 * JavaScript 钩子 *

大型网站技术架构 笔记

大型网站架构演化 特点: 高并发.大流量 高可用 海量数据 用户分布广泛.网络情况复杂 安全环境恶劣 需求快速变更.发布频繁 渐进式开发 演化发展历程 0. 演变原因 在现有架构下,我们来看看数据存储的瓶颈是什么? 数据量的总大小  一个机器放不下 数据的索引(B+ Tree)一个机器的内存放不下 访问量(读写混合)一个实例不能承受 只有当以上3件事情任何一件或多件满足时,我们才需要考虑往下一级演变. 1. 初始阶段: 应用程序.数据库.文件都在一台服务器,如常用的Linux+PHP+Apach