tmachc's notes

Stay Hungry, Stay Foolish.

0%

MySQL架构

逻辑架构

每个虚线框为一层,总共三层。
第一层,服务层(为客户端服务):为请求做连接处理,授权认证,安全等。

第二层,核心层:查询解析,分析,优化,缓存,提供内建函数;存储过程,触发器,视图。

第三层,存储引擎层,不光做存储和提取数据,而且针对特殊数据引擎还要做事务处理。

阅读全文 »

redis适用场景

  1. 取最新N个数据的操作
  2. 排行榜应用,取TOP N操作
  3. 需要精确设定过期时间的应用
  4. 计数器应用
  5. Uniq操作,获取某段时间所有数据排重值
  6. 实时系统,反垃圾系统
  7. Pub/Sub构建实时消息系统——消息的发布与订阅
  8. 构建队列系统
  9. 缓存

redis数据类型

Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)

阅读全文 »

网站应用攻击和防御

XSS攻击

XSS(Cross Site Script)即跨站点脚本攻击,是指黑客通过篡改网页注入恶意HTML,在用户浏览网页时,控制用户浏览器进行恶意操作的一种攻击方式。

  1. 反射型XSS
    攻击者诱使用户点击一个嵌入恶意脚本的链接,然后通过脚本进行攻击。
  2. 持久型XSS
    黑客提交含有恶意脚本的请求保存在被攻击Web站点上,当用户访问时,脚本生效,攻击生效。

主要解决方式有消毒(转义特殊字符,匹配文本等)、HttpOnly(禁止页面JS访问带有该属性的Cookie)

阅读全文 »

设计网站可扩展架构的核心思想是模块化,并在此基础之上,降低模块间的耦合性,提高模块的复用性。

分层和分割是模块化设计的重要手段,利用分层和分割的方式将软件拆解成若干个低耦合的独立的组件模块,这些组件模块以消息传递和依赖调用的方式聚合成一个完整的系统。将这些模块通过分布式部署的方式独立部署在独立的服务器(集群)上,从物理上分离模块间的耦合关系,进一步降低耦合性提高复用性。

模块化部署之后的聚合方式主要有分布式消息队列和分布式服务。

阅读全文 »

网站伸缩性可以分为两类,一种是按功能进行物理分离实现伸缩性,一类是单一功能通过集群实现伸缩。

不同功能物理分离:数据库、缓存、静态资源、可复用服务等纵向分离以及登录、搜索等也逻辑对应的横向分离。
单一功能集群伸缩:通过集群增强服务器计算能力,但需要注意可用性。

具体来说,集群伸缩性又分为应用服务器集群伸缩性和数据服务器集群伸缩性。数据服务器集群伸缩性又分为缓存数据服务集群和存储数据服务器集群。

阅读全文 »