zoukankan      html  css  js  c++  java
  • 2019版:第一章:(1)技术发展

    一、技术的分类

      1、解决功能性的问题

    Java、Servlet、JSP、Tomcat、RDBMS、JDBC、Linux、Svn 等
    

      

      2、解决扩展性的问题

    Spring、SpringMVC、SpringBoot、Hibernate、MyBatis 等
    

      

      3、解决性能的问题

    NOSQL、Java 多线程、Nginx、MQ、ElasticSearch、Hadoop 等
    

      

    二、发展历程

      1、Web1.0 时代

        Web1.0 时代,数据访问量很有限,用一夫当关的高性能的单节点服务器可以解决大部分问题。

        

      2、Web2.0 时代

        随着Web2.0的时代的到来,用户访问量大幅度提升,同时产生了大量的用户数据。加上后来的智能移动设备的普及,所有的互联网平台都面临了巨大的性能挑战。  

        

    三、解决服务器 CPU 内存压力

        

      思考:Session 共享问题如何解决?
      方案一:存在 Cookie 中?
                此种方案需要将 Session 数据以 Cookie 的形式存在客户端,不安全,网络负担效率低
        
     
      方案二:存在文件服务器或者是数据库里,此种方案会导致大量的 IO 操作,效率低。
        

       方案三:Session 复制

      此种方案会导致每个服务器之间必须将 Session 广播到集群内的每个节点,Session 数据会冗余,节点越多浪费越大,存在广播风暴问题。
        

      方案四:存在 Redis 中

        目前来看,此种方案是最好的。将 Session 数据存在内存中,每台服务器都从内存中读取数据,速度快,数据结构还相对简单。
        

    四、解决 IO 压力

      

      将活跃的数据缓存到 Redis 中,客户端的请求先打到缓存中获取对应的数据,如果能获取到,直接返回,不需要从 MySQL 中读取。
      如果缓存中没有,再从MySQL 数据库中读取数据,将读取的数据返回并存一份到 Redis 中,方便下次读取。
     
      扩展:对于持久化的数据库来说,单个库单个表存在性能瓶颈,因此会通过水平切分、垂直切分、读取分离等技术提升性能,此种解决方案会破坏一定的业务逻辑,但是可以换取更高的性能。
  • 相关阅读:
    改变人生的32句励志名言(转载)
    Unrecognized Attribute 'xmlns' when working with VS.NET Express Edition
    学外语的十条珍贵经验(转)
    自考版“八荣八耻”
    弟弟手机丢了
    近期准备学习3本书
    盗版vs2005.net买不到
    非常希望有“苏州.net俱乐部”
    My twenty,the end of a dynasty.
    死递归:“段错误”产生的可能原因之一
  • 原文地址:https://www.cnblogs.com/niujifei/p/15787792.html
Copyright © 2011-2022 走看看