架构

大型网站架构上考虑问题

  • 高性能:集群(负载均衡集群) 缓存 异步
  • 高可用:失效转移(服务)(高可用集群) 冗余备份(数据)(高可用集群)
  • 易伸缩
  • 可扩展
  • 安全性

  • 分割
  • 分层
  • 分布式
  • 集群: 使得更多服务器提供相同服务,可以更好的提供对并发的支持
  • 缓存: 利用空间换取时间的技术,是网站优化的第一定律,比如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


架构

架构