『大型网站技术架构:核心原理与案例分析』(三)

『大型网站技术架构:核心原理与案例分析』读书笔记系列:
(一):架构演化、模式、要素
(二):高性能架构
(三):高可用架构
(四):可伸缩架构
(五):可扩展架构
(六):安全性架构


『大型网站技术架构』(三):高可用架构

一、可用性度量与考核

度量

衡量方式:多少个9。

网站不可用时间(故障时间) = 故障修复时间点 - 故障发现(报告)时间点

网站年度可用性指标 = (1-网站不可用时间/年度总时间) * 100%

  • 2个9:基本可用,年度不可用时间小于88小时
  • 3个9:较高可用,年度不可用时间小于9小时
  • 4个9:具有自动恢复能力的高可用,年度不可用时间小于53分钟
  • 5个9:极高可用,年度不可用时间小于5分钟

考核

故障分:对网站故障进行分类加权计算故障责任。故障分 = 故障时间(分钟) * 故障权重。

  • 事故级故障(100): 严重故障,网站整体不可用
  • A类故障(20): 网站访问不顺畅或核心功能不可用
  • B类故障(5): 非核心功能不可用,或核心功能少数用户不可用
  • C类故障(1): 以上故障以外的其他故障

二、高可用网站架构

高可用架构设计不仅要考虑软硬件故障,还要考虑网站升级发布引起的不可用。

主要手段: 数据和服务的冗余备份和失效转移。

典型分层模型:

  • 应用层: 负责具体业务逻辑处理。思路:负载均衡设备
  • 服务层: 负责提供可复用的服务。思路:分布式服务调用框架,客户端软件负载均衡
  • 数据层: 负责数据的存储与访问。思路:数据冗余

三、高可用应用

主要特点:无状态

无状态应用是指应用服务器不保存业务的上下文信息,仅根据每次请求提交的数据进行相应业务逻辑处理,多个服务实例完全对等。

1. 通过负载均衡进行无状态服务的失效转移

  • 应用访问量小也使用负载均衡技术构建一个小型集群保证高可用
  • 平滑升级

2. 应用服务器集群的Session管理

  • Session复制:Session在集群中同步,大集群不适用。
  • Session绑定:Session Sticky,会话黏滞。Hash(Source IP)、Hash(Cookie),无法实现高可用。
  • 利用Cookie记录Session:服务器端不记录Session,每次从Cookie中解,服务器可线性伸缩。缺点:大小受限、增大传输数据量、用户关闭Cookie时不可用。
  • Session服务器:独立部署Session服务器集群,通过 分布式缓存+数据库 实现。可用性高、伸缩性好、性能不错。

四、高可用服务

主要特点: 无状态

  • 分级管理:核心业务隔离部署、用更好更稳定的硬件。
  • 超时设置
  • 异步调用
  • 服务降级:拒绝服务(拒绝低优先级任务、随机拒绝)、关闭功能。
  • 幂等性设计:允许重复调用。

五、高可用数据

主要手段:数据备份和失效转移机制

含义:

  • 数据持久性
  • 数据可访问性
  • 数据一致性:

    • 1) 数据强一致:最强,各副本数据在物理存储中一致;
    • 2) 数据用户一致: 较强,在物理存储中可能不一致,但是通过纠错和校验机制,可以返回一个一致且正确地的数据给用户;
    • 3) 数据最终一致,较弱,用户得到的数据可能不一致,但是最终会达到一致。

CAP理论: 数据一致性(Consistency)、数据可用性(Availibility)、分区容忍性(Partition Tolerance)。大型网站中,通常会选择强化分布式存储系统的可用性(A)和伸缩性(P),在某种程度上放弃一致性(C)。

缓存服务讨论,两种观点:

  • 缓存需要高可用:缓存承担了业务中绝大多数数据读取访问,缓存服务失效会影响整个网站可用性。
  • 缓存不需要高可用:缓存服务不是数据存储服务,缓存失效引起服务器负载太大的问题应用通过其他手段解决。比如扩大缓存集群规模,单台缓存服务器失效带来影响较小。

数据备份

  • 冷备份:定期将数据备份到某种存储介质(磁带、光盘……)并物理存档保管。简单、廉价、技术难度低,无法保证数据最终一致,可能丢数据,无法保证数据可用性。
  • 热备份:

    • 异步热备:Master-Slave架构。写Master,返回操作成功响应,再由Master同步到Slave,这个过程可能失败。例子:MySQL半同步复制、读写分离等。
    • 同步热备:存储服务器互相间对等。数据多副本写入同步完成。

失效转移

  • 失效确认:1. 心跳检查。2. 应用程序访问失败报告。
  • 访问转移:数据读写重新路由
  • 数据恢复:恢复副本数量

六、高可用网站软件质量保证

  • 网站发布:平滑升级,从LB下线->更新程序->挂回LB
  • 自动化测试
  • 预发布验证:预发布服务器与线上机器的唯一不同就是没有配置在负载均衡上,外部用户无法访问。避免验证过程污染生产环境数据。
  • 代码控制:1. 主干开发、分支发布。2. 分支开发、主干发布。
  • 自动化发布:周四发布,火车发布模型(基于规则驱动的流程,一级级评审)
  • 灰度发布:分批次升级,等一批稳定运行后再上下一批。

七、网站运行监控

准则:“不允许没有监控的系统上线”

监控数据采集

  • 用户行为日志收集:服务器端日志、客户端日志
  • 服务器性能监控
  • 运行数据报告:业务场景相关

监控管理

  • 系统报警
  • 失效转移
  • 自动优雅降级

--EOF--

『大型网站技术架构:核心原理与案例分析』(二)

『大型网站技术架构:核心原理与案例分析』读书笔记系列:
(一):架构演化、模式、要素
(二):高性能架构
(三):高可用架构
(四):可伸缩架构
(五):可扩展架构
(六):安全性架构


『大型网站技术架构』(二):高性能架构

一、不同视角下的网站性能

  • 用户视角

    关注点: 关注响应时间,包括浏览器和服务器通信时间 + 服务器处理时间 + 浏览器构造请求和解析响应的时间;
    优化手段: 前端架构优化

  • 开发人员视角

    关注点: 关注应用及相关子系统性能,包括响应延迟、系统吞吐量、并发处理能力、系统稳定性等技术指标;
    优化手段: 缓存加速数据读取、集群提高系统吞吐量、异步消息加快请求响应和削峰、代码优化提升性能;

  • 运维人员视角

    关注点:关注基础设施性能、资源利用率。
    优化手段: 建设优化骨干网、高性价比定制服务器、利用虚拟化技术优化资源利用率;

二、性能测试指标

1. 响应时间

定义:执行一个应用需要的时间,包括从发出请求开始到收到最后响应数据所需要的时间。反映系统快慢。

常用系统操作响应时间表

图1 常用系统操作响应时间表

2. 并发数

定义:系统能够同时处理请求的数目。反映系统负载特性。

网站系统用户数 >> 网站在线用户数 >> 网站并发用户数

3. 吞吐量

定义: 单位时间内系统处理的请求数量。反映系统的整体处理能力。
单位:TPS每秒事务数,HPS每秒HTTP请求数,QPS每秒查询数

并发数由小增大,服务器资源消耗逐渐增大,吞吐量先增大后下降,直至资源耗尽,吞吐量为零。

4. 性能计数器

定义:描述服务器或操作系统性能的一些数据指标。比如load、对象与线程数、内存、CPU、磁盘/网络IO。

三、性能测试方法

1. 性能测试

以系统设计规划的性能指标为预期目标,验证系统在资源可接受范围内是否能达到性能预期。

2. 负载测试

不断增大并发请求增加系统压力,直到系统某项或多项性能指标达到安全临界值。此时如果继续施压,系统处理能力不升反降。

3. 压力测试

对系统持续加压超过安全负载,直到系统崩溃,以此获得系统最大压力承受能力。

4. 稳定性测试

被测系统在特定硬件、软件、网络环境下,给系统加载一定业务压力,使系统运行一段较长时间,以此检测系统是否稳定。

perftest

图2 测试性能曲线

a-b是网站日常运行区间,c是系统最大负载点,d是系统崩溃点。

四、性能优化策略

1. Web前端性能优化

1.1. 浏览器访问优化

  • 减少HTTP请求:合并CSS/JS/图片,sprite技术。
  • 使用浏览器缓存静态资源:Cache-Control、Expires
  • 启用压缩:gzip(文本文件压缩率80%以上)
  • CSS放在页面最上面(浏览器下载完CSS才开始渲染)、JS放在页面最下面(浏览器加载JS后立即执行,避免某些操作阻塞页面)。
  • 减少Cookie传输:减少Cookie中数据量、为静态资源使用独立域名,避免发送Cookie。

1.2. CDN加速:CDN本质是缓存,将数据(静态资源)缓存在离用户最近的地方。
1.3. 反向代理:缓存静态资源,加速请求响应速度、负载均衡,改善性能、安全

2. 应用服务器性能优化

2.1. 分布式缓存
网站性能优化第一定律:优先考虑使用缓存优化性能。

2.1.1. 缓存基本原理:Hash表

2.1.2. 合理使用缓存:

  • 不频繁修改的数据:读写比2:1以上。
  • 有热点的访问:遵循二八定律。
  • 应用能够容忍短期数据不一致和脏读,最终一致。
  • 缓存可用性:防止出现缓存雪崩,即系统性能已经严重依赖缓存,没它不行。
  • 缓存预热: 缓存启动时把热点数据预热(warm up)好。
  • 防止缓存穿透:恶意请求不存在的Key,使请求落到数据库,一个对策是将不存在的数据也缓存起来,令其值为null。

2.1.3. 分布式缓存架构:

  • 需同步更新副本的分布式架构(JBoss Cache)
  • 互不通信的分布式架构(Memcached:简单地通信协议、丰富的客户端程序、高性能网络通信(Libevent、事件触发)、高效的内存管理(slab、chunk)、一致性hash)

2.2. 异步操作
使用消息队列将调用异步化,降低响应延时。

  • 避免高并发请求数据直接落到数据库。
  • 削峰,消除并发访问高峰。

2.3. 使用集群
负载均衡,避免单一服务器压力过大而响应缓慢。

3. 代码优化

3.1. 多线程
启动线程数 = [任务执行时间/(任务执行时间-IO等待时间)] * CPU核数

注意线程安全问题:

  • 将对象设计为无状态:对象无成员变量,在OOP看来是一种不良设计。
  • 使用局部对象。
  • 并发访问资源使用锁。

3.2. 资源复用
尽量减少那些开销很大的系统资源的创建和销毁,比如数据库连接、网络通信连接、线程、复杂对象等。

两种模式:

  • 单例(Singleton): 贫血模式,例如Service、Dao等无状态对象,无需重复创建。(对应有状态的充血模式)
  • 对象池(Object Pool):复用对象实例,减少对象创建和资源消耗,例如连接池、线程池等。

3.3. 数据结构

  • 优化算法
  • 优化数据结构

3.4. 垃圾回收

理解垃圾回收机制,程序优化和参数调优,减少Full GC。

JVM垃圾回收:年轻代+老生代。年轻代包括Eden Space、From、To,进行Young GC;老生代进行Full GC。新对象从Eden Space创建,Eden满了以后YGC,将存活对象复制到From区。当Eden再次满后再次YGC,将Eden和From中的存活对象复制到To。当Eden再次满后再次YGC,将Eden和To中的存活对象复制到From。多次YGC未释放的对象进到老生代,老生代空间满时Full GC。

4. 存储性能优化

4.1. 机械硬盘升级为固态硬盘
4.2. B+树:文件系统或数据库系统通过B+数对数据排序后存储,加快数据检索速度。
4.3. RAID:可通过硬件或者软件实现。

  • RAID0: 并发读写N块磁盘,速度快,无冗余,数据可靠性低,磁盘利用率100%。
  • RAID1: 镜像磁盘,访问速度慢,数据可靠性高,磁盘利用率50%。
  • RAID10: 结合RAID0和RAID1,将磁盘分成2份,互为镜像,同RAID1,每一份磁盘中的数据并发读写。访问速度较快,数据可靠性高,磁盘利用率50%。
  • RAID3/5/6: 冗余存储校验数据,使少数盘破坏的情况下数据能恢复。访问速度较快,数据可靠性较高,磁盘利用率较高。

--EOF--

『大型网站技术架构:核心原理与案例分析』(一)

『大型网站技术架构:核心原理与案例分析』读书笔记系列:
(一):架构演化、模式、要素
(二):高性能架构
(三):高可用架构
(四):可伸缩架构
(五):可扩展架构
(六):安全性架构


『大型网站技术架构』(一):架构演化、模式、要素

一、大型网站架构演化

1. 架构演化

  • 应用程序、数据库、文件服务器部署在同一台机器
  • 应用程序、数据库、文件服务器独立部署
  • 使用缓存,加速数据读取
  • 应用程序集群化,负载均衡
  • 数据库读写分离
  • CDN加速
  • 分布式文件系统、分布式数据库
  • NoSQL + 搜索引擎
  • 业务拆分,数据库共享
  • 服务化,业务分库

2. 演化价值观

  • 逐步发展、灵活应对
  • 业务驱动技术发展:业务成就技术、事业成就人

3. 误区

  • 追随大公司解决方案:"taobao/facebook就是这么搞的"
  • 为了技术而技术:一味追求新技术,误入崎岖道路
  • 企图用技术解决所有问题:考虑通过业务手段解决业务问题(12306排队机制、调整放票时段,不搞秒杀)

二、大型网站架构模式

面临高并发访问、海量数据处理、高可靠运行等挑战,总结出许多解决方案和可重复的模式,以实现高性能、高可用、易伸缩、可扩展、安全等各种技术架构目标。

1. 分层

定义:将系统在横向维度上切分成几个部分,每个部分负责一部分相对比较单一的职责,然后通过上层对下层的依赖和调用组成一个完整系统。

举例: OSI 7层协议,计算机架构(硬件、OS、应用软件),网站系统(应用层、服务层、数据层), MVC。

注意事项:

  • 合理规划层次边界和接口
  • 避免跨层调用
  • 避免逆向调用

2. 分割

定义: 在纵向对软件进行切分。

举例:网站业务拆分(购物、论坛、搜索、广告等),购物业务拆分(酒店业务、3C业务、小商品业务等)

3. 分布式

目标: 分层和分割后的模块拥有更小的粒度,目的是分布式部署,便于使用更多资源(CPU、内存、存储等),提供更多服务。

注意事项:

  • 服务间调用通过网络,造成性能影响。
  • 服务器越多,宕机概率越大,服务可用性降低。
  • 数据一致性问题。
  • 依赖复杂。
  • 开发管理苦难。
  • 切莫为了分布式而分布式。

分布式方案:

  • 分布式应用和服务:分层和分割后的应用和服务模块分布式部署。
  • 分布式静态资源:静态资源(JS、CSS、图片等)分布式部署,动静分离。
  • 分布式数据和存储:海量数据存储,分布式NoSQL。
  • 分布式计算:实时计算,搜索引擎、MapReduce分布式计算框架。
  • 分布式配置:服务器配置实时更新。
  • 分布式锁:分布式环境下的并发和协同。
  • 分布式文件系统:云存储。

4. 集群

定义: 多台服务器部署相同应用或模块,通过负载均衡对外提供服务。提高并发性和可用性。

5. 缓存

定义:将数据存放在距离计算最近的位置以加快处理速度。

举例:

  • CDN: 缓存静态资源。
  • 反向代理:缓存静态资源。
  • 本地缓存: 数据缓存在本机内存,减少访问数据库。
  • 分布式缓存: 可以缓存更多地数据。

缓存使用前提:

  • 数据访问热点不均衡。
  • 数据有一段有效期,不会很快过期,否则很容易脏读。

6. 异步

目标:降低系统间耦合性。

类型:

  • 单一服务:多线程共享内存队列。
  • 分布式系统:分布式消息队列。

异步消息队列特性:

  • 提高系统可用性:消费者故障不影响生产者继续处理业务请求。
  • 加快网站响应速度: 生产者处理业务请求后将数据写入队列,无需等待消费者处理完毕,减少响应延迟。
  • 消除并发访问高峰:突发事件、促销活动、热点事件。

7. 冗余

目标:数据冗余备份,当某台服务器宕机,可以将其上的服务和数据访问转移到其他机器,提高服务可用性。

类型:

  • 冷备份: 定期备份,存档保存。
  • 热备份: 主从分离,主从同步。
  • 灾备数据中心:实时同步网站程序和数据到多个数据中心,抵抗地震、海啸等不可抗力因素。

8. 自动化

目标:一切自动化。

类型:

  • 自动化代码管理:针对开发,代码版本控制、代码分支创建合并自动化。
  • 自动化测试:自动部署到测试环境,运行测试用例,发送测试报告,反馈测试结果。
  • 自动化安全检查:代码静态安全扫描,安全攻击测试。
  • 自动化部署:自动化部署到生产环境。
  • 自动化监控
  • 自动化报警
  • 自动化失效转移:将失效服务器从集群中隔离。
  • 自动化失效恢复:故障消除后重启服务,同步数据。
  • 自动化降级:遇到访问高峰时拒绝部分请求及关闭部分不重要服务,将系统负载降至安全水平。
  • 自动化分配资源:将空闲资源分配给重要服务,扩大其部署规模。

9. 安全

安全手段:

  • 用密码和手机校验码进行身份认证。
  • 加密通信。
  • 验证码机制防止机器人。
  • 进行编码转换等防止XSS、SQL注入。
  • 垃圾信息、敏感信息过滤。
  • 交易信息进行风险控制。

三、大型网站架构要素

架构:最高层次的规划,难以改变的决定。

1. 性能

手段

  • 浏览器端: 浏览器缓存、页面压缩、页面布局、减少Cookie传输、CDN等;
  • 应用服务器端:本地缓存、分布式缓存、消息队列、集群,多线程、改善内存管理;
  • 数据库服务器端:索引、缓存、SQL优化,NoSQL(优化数据模型、存储结构、伸缩性);

指标

  • 响应时间
  • TPS
  • 系统性能计数器

2. 可用性

手段:冗余

  • 应用服务器: 负载均衡 + 流量切换;
  • 存储服务器: 实时备份 + 访问转移 + 数据恢复

3. 伸缩性

定义: 通过不断向集群中加入服务器的手段来缓解不断上升的用户并发访问压力和不断增长的数据存储需求。

  • 应用服务器: 无状态;
  • 缓存服务器: 改进缓存路由算法。注意严重依赖缓存场景下,缓存失效导致整个网站崩溃;
  • 关系数据库: 需在数据库外实现伸缩性,通过路由分区等手段将多个数据库组成集群;
  • NoSQL:先天为海量数据而生,线性伸缩。

4. 扩展性

标准:

  • 网站快速发展,功能不断扩展,系统架构能够使其快速响应需求变化;
  • 新增业务,对现有产品透明无影响;
  • 产品间很少耦合。

手段:

  • 事件驱动架构:通过消息队列实现,用户请求和其他业务事件是生产者,消息处理者是消费者,可以透明增加新的消息生产者任务或者消费者任务;
  • 分布式服务:将业务和可复用服务分离开来,通过分布式服务框架调用。新增产品可以通过调用可复用的服务实现自身业务逻辑。可复用服务升级变更时,通过多版本方式对应用实现透明升级。

5. 安全性

标准: 针对现存和潜在的攻击和窃密手段,是否有可靠的应对策略。

--EOF--

『棋王』

『棋王』春节在家看了一部中篇小说『棋王』,它是当代作家阿城的成名作,讲述的是在一个知青下乡的年代,“棋呆子”王一生嗜棋如命,不断与人切磋棋艺,在最后的车轮战中戏剧性地以一敌九,加冕为乡亲们心目中的“棋王”。作者借此表达在一个物质极为困乏的年代,总归还是有不少理想主义青年愿意为理想正名,借棋道喻生道,“中华棋道,毕竟不颓”。

说起理想主义,说起生道,总是不免令人感叹,生活太具体,无法抓住其内在逻辑。“天下的事,不知道的太多。这每天的大字报,张张都新鲜,虽看出点道儿,可不能究底。子儿不全摆上,这棋就没法儿下”,如果生道都像棋道,就这么棋盘点大小,就这么几个棋子,就这么几条规则,大小事情全看在眼里,倒也不至于会令困局中的人们产生痛苦。

甭管身处哪个年代,能专注于一件事都不是一件容易的事情,我们会因为各种事情分心,大多时候忙碌于满足马斯洛需求层次中的底层,生存、情感等这些需求已经耗去了大半精力,真正留给自我实现的精力少之又少。回过来看『棋王』,因为食物稀缺,小说中的人物对“吃”都极为讲究,大多以虔诚的心态面对着这些非常普通的食物,无论火车上的盒饭,还是农场里的烤蛇。“吃完以后,他把两只筷子吮净,拿水把饭盒冲满,将上面一层油花吸净”,“有时你会可怜那些饭被他吃得一个渣儿都不剩,真有点儿惨无人道”,“我们这种人,没有什么忧,顶多有些不痛快。何以解不痛快?唯有象棋”……类似的描写对照着读更显王一生对棋的执着,这是一种拿理想当饭吃的态度。

附录:『棋王』精彩描写片段

--EOF--

『醉古堂剑扫』

『醉古堂剑扫』王家卫的访谈让很人多知道了『醉古堂剑扫』,这其中也包括我。初闻“醉花宜昼,醉雪宜夜”、“不知了了是了了,若知了了,便不了”时仿佛全身的文艺细胞都聚集起来了,深深折服于古人的表达能力。『醉古堂剑扫』,有人说它就是『小窗幽记』,实际上这两不是同一本书。看过一篇考证文章,作者推断前者为原作,后者为伪作,从论据来看倒也合乎情理,所以我就暂且认为我读过的是『醉古堂剑扫』,而非『小窗幽记』。『醉古堂剑扫』是明代陆绍珩编撰,全书12卷:醒、情、峭、灵、素、景、韵、奇、绮、豪、法、倩,主要从明代各类儒家书籍中摘录了各种醒世恒言,按类型分门别类,编辑成书。用现代的眼光看来,实际上它就是一部充满各种心灵鸡汤的读书笔记,因为取材自儒派经典,故表达的观点也多扬“入世”、抑“出世”。

以下为读书笔记:

今世之昏昏逐逐,无一日不醉,无一人不醉,趋名者醉于朝,趋利者醉于野,豪者醉于声色车马,而天下竟为昏迷不醒之天下矣,安得一服清凉散,人人解酲,集醒第一。

使人有面前之誉,不若使人无背后之毁;使人有乍交之欢,不若使人无久处之厌。

居盈满者,如水之将溢未溢,切忌再加一滴;处危急者,如木之将折未折,切忌再加一搦。

情最难久,故多情人必至寡情;性自有常,故任性人终不失性。

真廉无廉名,立名者,正所以为贪;大巧无巧术,用术者,乃所以为拙。

为恶而畏人知,恶中犹有善念;为善而急人知,善处即是恶根。

贪得者,身富而心贫;知足者,身贫而心富;居高者,形逸而神劳;处下者,形劳而神逸。

才人经世,能人取世,晓人逢世,名人垂世,高人出世,达人玩世。

沾泥带水之累,病根在一恋字;随方逐圆之妙,便宜在一耐字。

佛只是个了,仙也是个了,圣人了了不知了。不知了了是了了,若知了了,便不了。

处事不可不斩截,存心不可不宽舒,待己不可不严明,与人不可不和气。

笔之用以月计,墨之用以岁计,砚之用以世计。笔最锐,墨次之,砚钝者也。岂非钝者寿,而锐者夭耶?笔最动,墨次之,砚静者也。岂非静者寿而动者夭乎?于是得养生焉。以钝为体,以静为用,唯其然是以能永年。

贫贱之人,一无所有,及临命终时,脱一厌字;富贵之人,无所不有,及临命终时,带一恋字。脱一厌字,如释重负;带一恋字,如担枷锁。

透得名利关,方是小休歇;透得生死关,方是大休歇。

天下之事,利害常相半;有全利,而无小害者,惟书。

处巧若拙,处明若晦,处动若静。

世人皆醒时作浊事,安得睡时有清身;若欲睡时得清身,须于醒时有清意。

草色花香,游人赏其真趣;桃开梅谢,达士悟其无常。

欲不除,似蛾扑灯,焚身乃止;贪无了,如猩嗜酒,鞭血方休。

休怨我不如人,不如我者常众;休夸我能胜人,胜如我者更多。

有誉于前,不若无毁于后;有乐于身,不若无忧于心。

富时不俭贫时悔,潜时不学用时悔,醉后狂言醒时悔,安不将息病时悔。

贫不足羞,可羞是贫而无志;贱不足恶,可恶是贱而无能;老不足叹,可叹是老而虚生;死不足悲,可悲是死而无补。

大凡聪明之人,极是误事。何以故,惟聪明生意见,意见一生,便不忍舍割。往往溺于爱河欲海者,皆极聪明之人。

己情不可纵,当用逆之法制之,其道在一忍字;人情不可拂,当用顺之法调之,其道在一恕字。

世无花月美人,不愿生此世界。

枕边梦去心亦去,醒后梦还心不还。

亭前杨柳,送尽到处游人;山下蘼芜,知是何时归路。

银烛轻弹,红妆笑倚,人堪惜情更堪惜;困雨花心,垂阴柳耳,客堪怜春亦堪怜。

山水花月之际,看美人更觉多韵。非美人借韵于山水花月也,山水花月直借美人生韵耳。

良缘易合,红叶亦可为媒;知己难投,白璧未能获主。

放得俗人心下,方可为丈夫。放得丈夫心下,方名为仙佛。放得仙佛心下,方名为得道。

竹外窥莺,树外窥水,峰外窥云,难道我有意无意;鸟来窥人,月来窥酒,雪来窥书,却看他有情无情。

一失脚为千古恨,再回头是百年人。

学者要有兢业的心思,又要有潇洒的趣味。

平民种德施惠,是无位之卿相;仕夫贪食财好货,乃有爵的乞人。

枝头秋叶,将落犹然恋树;檐前野鸟,除死方得离笼。人之处世,可怜如此。

有面前之誉易,无背后之毁难;有乍交之欢易,无久处之厌难。

待人而留有余不尽之恩,可以维系无厌之人心;御事而留有余不尽之智,可以堤防不测之事变。

无事如有事时堤防,可以弭意外之变;有事如无事时镇定,可以销局中之危。

种两倾负郭田,量晴校雨;寻几个知心友,弄月嘲风。

是技皆可成名天下,唯无技之人最苦;片技即足自立天下,唯多技之人最劳。

傲骨、侠骨、媚骨,即枯骨可致千金;冷语、隽语、韵语,即片语亦重九鼎。

志要高华,趣要淡泊。

眼里无点灰尘,方可读书千卷;胸中没些渣滓,才能处世一番。

如今休去便休去,若觅了时无了时。若能行乐,即今便好快活。身上无病,心上无事,春鸟是笙歌,春花是粉黛。闲得一刻,即为一刻之乐,何必情欲乃为乐耶?

择池纳凉,不若先除热恼;执鞭求富,何如急遣穷愁。

凡醉各有所宜。醉花宜昼,袭其光也;醉雪宜夜,清其思也;醉得意宜唱,宣其和也;醉将离宜击钵,壮其神也;醉文人宜谨节奏,畏其侮也;醉俊人宜益觥盂加旗帜,助其怒也;醉楼宜暑,资其清也;醉水宜秋,泛其爽也。此皆审其宜,考其景,反此则失饮矣。

必出世者,方能入世,不则世缘易堕;必入世者,方能出世,不则空趣难持。

万事皆易满足,惟读书终身无尽;人何不以不知足一念加之书。又云:读书如服药,药多力自行。

打透生死关,生来也罢,死来也罢;参破名利场,得了也好,失了也好。

我争者,人必争,虽极力争之,未必得;我让者,人必让,虽极力让之,未必失。

沧海日,赤城霞;蛾眉雪,巫峡云;洞庭月,潇湘雨;彭蠡烟,广凌涛;庐山瀑布,合宇宙奇观,绘吾斋壁。少陵诗,摩诘画;左传文,马迁史;薛涛笺,右军帖;南华经,相如赋;屈子离骚,收古今绝艺,置我山窗。

成名每在穷苦日,败事多因得志时。

宠辱不惊,肝木自宁;动静以敬,心火自定;饮食有节,脾土不泄;调息寡言,肺金自全;怡神寡欲,肾水自足。

天下可爱的人,都是可怜人;天下可恶的人,都是可惜人。

凡名易居,只有清名难居;凡福易享,只有清福难享。

舞蝶游蜂,忙中之闲,闲中之忙;落花飞絮,景中之情,情中之景。

五夜鸡鸣,唤起窗前明月;一觉睡起,看破梦里当年。

田园有真乐,不潇洒终为忙人;诵读有真趣,不玩味终为鄙夫;山水有真赏,不领会终为漫游;吟咏有真得,不解脱终为套语。

但看花开落,不言人是非。

莫恋浮名,梦幻泡影有限;且寻乐事,风花雪月无穷。

世味浓,不求忙而忙自至;世味淡,不偷闲而闲自来。

流年不复记,但见花开为春,花落为秋;终岁无所营,惟知日出而作,日入而息。

是非场里,出人逍遥;顺逆境中,纵横自在。竹密何妨水过,山高不碍云飞。

花开花落春不管,拂意事休对人言;水暖水寒鱼自知,会心处还期独赏。

宠辱不惊,闲看庭前花开花落;去留无意,漫随天外云卷云舒。斗室中万虑都捐,说甚画栋飞云,珠帘卷雨;三杯后一真自得,谁知素弦横月,短笛吟风。

当乐境而不能享者,毕竟是薄福之人;当苦境而反觉甘者,方才是真修之士。

曲高每生寡和之嫌,歌唱需求同调;眉修多取入宫之妒,梳洗切莫倾城。

绘雪者,不能绘其清;绘月者,不能绘其明;绘花者,不能绘其香;绘风者,不能绘其声;绘人者,不能绘其情。

多方分别,是非之窦易开;一味圆融,人我之见不立。

浣花溪内,洗十年游子衣尘;修木林中,定四海良朋交籍。

春夜宜苦吟,宜焚香读书,宜与老僧说法,以销艳思。夏夜宜闲谈,宜临水枯坐,宜听松声冷韵,以涤烦襟。秋夜宜豪游,宜访快士,宜谈兵说剑,以除萧瑟。冬夜宜茗战,宜酌酒说《三国》、《水浒》、《金瓶梅》诸集,宜箸竹肉,以破孤岑。

道上红尘,江中白浪,饶他南面百城;花间明月,松下凉风,输我北窗一枕。

俗气入骨,即吞刀刮肠,饮灰洗胃,觉俗态之益呈;正气效灵,即刀锯在前,鼎镬具后,见英风之益露。

读《春秋》,在人事上见天理;读《周易》,在天理上见人事。

昔人有花中十友:桂为仙友,莲为净友,梅为清友,菊为逸友,海棠名友,荼蘼韵友,瑞香殊友,芝兰芳友,腊梅奇友,栀子禅友。昔人有禽中五客:鸥为闲客,鹤为仙客,鹭为雪客,孔雀南客,鹦鹉陇客。会花鸟之情,真是天趣活泼。

个个题诗,写不尽千秋花月;人人作画,描不完大地江山。

天下无不虚之山,惟虚故高而易峻;天下无不实之水,惟实故流而不竭。

世多理所难必之事,莫执宋人道学;世多情所难通之事,莫说晋人风流。

毋似小嫌而疏至戚,勿以新怨而忘旧恩。

爵位不宜太盛,太盛则危;能事不宜尽毕,尽毕则衰。

男子有德便是才,女子无才便是德。

死后声名,空誉墓中之骸骨;穷途潦倒,谁怜宫外之蛾眉。

君子处身,宁人负己,己无负人;小人处事,宁己负人,无人负己。

砚神曰淬妃,墨神曰回氏,纸神曰尚卿,笔神曰昌化,又曰佩阿。

要治世,半部《论语》;要出世,一卷《南华》。

祸莫大于纵己之欲,恶莫大于言人之非。

求见知于人世易,求真知于自己难;求粉饰于耳目易,求无愧于隐微难。

君子有三惜:此生不学,一可惜;此日闻过,二可惜;此身一败,三可惜。

士大夫三日不读书,则礼义不交,便觉面目可憎,语言无味。

势不可倚尽,言不可道尽,福不可享尽,事不可处尽,意味偏长。

静坐然后知平日之气浮,守默然后知平日之言躁,省事然后知平日之贵闲,闭户然后知平日之交滥,寡欲然后知平日之病多,近情然后知平日之念刻。

人之恩可念不可忘,人之仇可忘不可念。

《水浒传》无所不有,却无破老一事,非关缺陷,恰是酒肉汉本色。如此益知作者之妙。

心中事,眼中景,意中人。

园花按时开放,因即其佳称待之以客。梅花索笑客,桃花销恨客,杏花倚云客,水仙凌波客,牡丹酣酒客,芍药占春客,萱草忘忧客,莲花禅社客,葵花丹心客,海棠昌州客,桂花青云客,菊花招隐客,兰花幽谷客,酴醾清叙客,腊梅远寄客。须是身闲,方可称为主人。

甘酒以待病客,辣酒以待饮客,苦酒以待豪客,淡酒以待清客,浊酒以待俗客。

--EOF--