架构师修炼之道

知识日新月异,唯有保持同步迭代,才能适应变化的未来!

0%

简介

MongoDB是一个使用C++编写的、开源的、面向文档的NoSQL(Not Only SQL)数据库,也是当前最热门的NoSql数据库之一。

NoSQL简介

NoSQL的意思是“不仅仅是SQL”,是目前流行的“非关系型数据库”的统称。常见的NoSQL数据库如:Redis、CouchDB、MongoDB、HBase、Cassandra等。

  • 出现NoSQL的原因:为解决在Web2.0时代出现的三高要求:
    1. 对数据库高并发读写的需求
    2. 对海量数据的高效率存储和访问的需求
    3. 对数据库的高可扩展性和高可用性的需求
    4. 而RDB里面的一些特性,在web2.0里面往往变得不那么重要,比如:
    • 数据库事务一致性
    • 数据库的实时读写
    • 复杂的SQL查询,特别是多表关联查询

从第4点可以看出MongoDB的使用场景,但具体的我在后面重点介绍。

阅读全文 »

grep是一个最初用于Unix操作系统的命令行工具。在给出文件列表或标准输入后,grep会匹配一个或多个正则表达式的文本进行搜索,并只输出匹配的行或文本。它是一个非常实用的强大文本搜索命令,下面介绍它常见的几种应用场景。

使用方法

为了方便演示grep的各种常见使用方法,我们在github上随意找一个项目并下载,接着进入根目录开始测试。

1
2
3
4
5
cd /tmp
wget -c https://github.com/WordPress/WordPress/archive/master.zip
unzip master.zip
mv WordPress-master WordPress
cd WordPress
阅读全文 »

CAS介绍

  • CAS 是Yale(耶鲁)大学一个开源的企业级单点登录系统,它的特点:
    1. Java (Spring Webflow/Spring Boot) 服务组件
    2. 可插拔身份验证支持(LDAP,Database,X.509,MFA)
    3. 支持多种协议(CAS,SAML,OAuth,OpenID,OIDC)
    4. 跨平台客户端支持(Java,.Net,PHP,Perl,Apache等)
    5. 与uPortal,Liferay,BlueSocket,Moodle,Google Apps等集成

CAS提供了一个友好的开源社区,方便开发者积极支持和贡献项目。

阅读全文 »

背景

  • 从支付宝转账1万块钱到余额宝,支付宝扣除1万之后,如果系统挂掉怎么办,这时余额宝账户并没有增加1万,数据就会出现不一致状况了。
  • 在电商系统中,当有用户下单后,除了在订单表插入一条记录外,对应商品表的商品数量必须减1,怎么保证?
  • 在广告系统中,当用户点击某广告后,除了在点击事件表中增加一条记录外,还得去商家账户表中找到这个商家并扣除广告费,怎么保证?
    这些问题本质上都可以抽象为:当一个表数据更新后,怎么保证另一个表的数据也必须要更新成功。

思考

  1. 如果系统规模较小,数据表都在一个数据库实例上,本地事务方式可以很好地运行。
  2. 但是如果系统规模较大,比如支付宝账户表和余额宝账户表显然不会在同一个数据库实例上,他们往往分布在不同的物理节点上,这时本地事务已经失去用武之地。
    阅读全文 »

背景

越权漏洞是Web应用程序中一种非常常见的安全漏洞,在中小网站甚至某些大型网站中同样存在,它的威胁在于某个账户可以控制全站用户数据,包括新增、修改和删除操作。越权漏洞的成因主要是由于开发人员在对数据进行操作时对客户端请求过来的数据过分相信而遗漏了权限判定。

越权类型

为了方便描述,在这里假设某网站有两种角色(普通用户和管理员),有三位用户,其中两位普通用户A和B,一位管理员C。

垂直越权

如果A用户登录网站可以查看或变更C的功能则属于垂直越权,由此可见垂直越权通常发生在不同角色之间的。

水平越权

而同角色之间可以互相查看或变更对方的数据则属于水平越权,即A可以查看或变更B的数据。

阅读全文 »