架构
大型网站架构上考虑问题
- 高性能:集群(负载均衡集群) 缓存 异步
- 高可用:失效转移(服务)(高可用集群) 冗余备份(数据)(高可用集群)
- 易伸缩
- 可扩展
- 安全性
- 分割
- 分层
- 分布式
- 集群: 使得更多服务器提供相同服务,可以更好的提供对并发的支持
- 缓存: 利用空间换取时间的技术,是网站优化的第一定律,比如CDN、反向代理、热点数据都是对缓存技术的使用
- 异步: '能推迟处理则推迟处理’是网站优化的第二定律,典型生产者消费者模式
- 冗余: 网站高可用性重要保证
说明
CDN通常缓存静态资源
反向代理可以保护网站的安全性、也可以实现负载均衡功能,最重要功能是缓存用户访问的热点数据,可以直接从反向代理将某些内容返回给用户浏览器
缓存
一致性
提高数据库性能
-
方式一
数据库的读写分离更像是数据安全的一个副产品
解释: 使用一台数据库服务器不安全(数据容易丢失),便使用另一台服务器作为备份,既然有了两台服务器,本着充分利用原则,于是有了"读写分离",性能提高一倍 -
方式二
共享缓存(Redis/Memcached)或进程缓存 + 服务器集群
注意: 只是提高"读"性能 -
方式三
表分区分库分表
系统解耦
- 分层(横向切分)
- 分割(纵向切分)不同功能和服务分割开,形成高内聚低耦合功能模块单元
- 分布
- 异步
应用服务器优化技术
- 分布式缓存
- 集群
- 异步
- 代码优化
多线程
非阻塞IO
资源复用:单例和对象池(线程池和连接池-‘空间换取时间’)
知识体系
-
Java基础知识
JVM
线程
IO
集合 -
设计模式
-
J2EE
操作系统
Linux环境配置和操作
开发环境
IDEA
Maven
svn
git
应用服务器配置和调优
Nginx
Apache
Tomcat
Jetty
框架
Struts
Spring
Hibernate
MyBatis/IBatis
消息中间件
ActiveMQ
RabbitMQ
Kafka
NSQ
服务中间件
Spring RMI
ESB
SOA
缓存
Memcache
Redis
Varnish
搜索
Lucene
Nutch
Solr
数据库
MySQL
Oracle
大数据
Hadoop