澳门百老汇游戏 服务器常用软件
微信 下载千亿国际aPP 交流社区 在线工具

澳门百老汇游戏报道构建互联网高性能WEB系统经验总结

  公布时间:2019-08-02 14:15:24   作者:华靖宇   我要议论

这篇文章主要介绍了构建互联网高性能WEB系统,总结分析了构建高性能WEB系统相关经验与常用技术,需要的朋友能够参考下

互联网开展至今各种应用层出不穷,用户量动辄上亿。所以如何构建一个优秀的高性能、高可靠的应用系统对每一个开拓者至关重要。本文将我所学到和在工作中使用到的一些方法概括总结,希望给别的同学起到一些借鉴作用,在以后的开拓中遇到类似的问题,能快速的找到解决方案。本人主要使用语言是JAVA,所以下面不做特别说明,都是使用JAVA语言

高性能的关键

要想做到高性能,我总结了三点:

  1. 缓存
    • DNS缓存
    • 澳门百老汇赌场缓存
    • 分布式缓存
  2. 拆分
    • 业务拆分
    • 澳门百老汇赌场拆分
  3. 异步
    • 网络异步
    • 磁盘异步
    • 使用消息

上面举了一些三点中常见的情况,无论什么地方遇到性能瓶颈,谨记这三点,大多数时刻都能找到解决方案。以下分别介绍在整个架构中各个方面对这三点的应用

无状态服务

说无状态服务我们首先要想到无状态工具,无状态工具简单的能够了解为没有Field的工具,比如model/entity工具就不属于无状态工具,因为他含有Field,比如典范MVC场景的**Controller,**Service就是无状态的,他们只含有method。有的也是有状态的,比如Structs2框架的Action,所以Structs2现在用得比较少了。有了无状态工具,我们才有可能构建无状态服务,因为要求链路中不包含有状态工具,所以我们每一次要求都是独立的,这样的架构有助于我们服务进行扩展。

无状态服务有时刻不可幸免的会遇到一些有状态的工具,比如最常见的就是session。因为http要求本身是无状态的,所以必须cookie和session配合使用,才能识别多次http要求属于同一用户。一般有两种方法解决:

  • 使用cookie存储
  • 使用分布式session服务

第一种就是将工具信息全部存储在cookie中,通过相应的算法等在服务端将cookie中的信息读出来。这些信息一般都会进行加密处置。
第二种方法,就是将session存储在分布式澳门百老汇赌场或者分布式缓存中,一般存在redis或者memcache中。那这种服务扩展会依赖第三方澳门百老汇赌场或缓存的能力。淘宝有类似的组件,开源世界也有基于memcache和redis的分布式session

无状态服务用到了拆分和缓存

业务拆分

无状态能够使应用服务水平扩展,但是当单个应用太大太臃肿时,有必要对应用进行拆分。垂直拆分即按业务拆分,比如电商系统中,按照订单系统,积分系统等进行拆分。拆分能够方便开拓,更方便扩展。系统大了以后,每个业务的访问量是纷歧样的,比如买家系统肯定比卖家系统访问量大得多,这时刻就能够只增加买家系统的机器即可。

除了按照业务的差别拆分成差别的系统以外,针对我们的应用分层也能够进行拆分,一般分为应用层、逻辑层和原子层。应用层就是各种数据、逻辑业务的组装,逻辑层含有大批可重用逻辑,原子层直接操作澳门百老汇赌场,一些基本的数据操作包含在其中。

不论以何种形式拆分,拆分以后的系统在物理层面上就离别开来,所以系统间的通信是拆分中最重要的问题所在。

RPC

在RPC服务之前已经许多系统通信的方法,比如RMI、WebService,但是RPC以更方便,更高效,跨平台的方式现在成为主流的通信手段。几乎每个大优乐国际娱乐平台 官方网站都有自己的RPC框架:淘宝的HSF、58的SCF,也有非常多优秀的开源框架:Dubbo、GRPC、Thrift等等。国内用dubbo的大优乐国际娱乐平台 官方网站也很多:京东、当当都是。

MQ

RPC挪用一般是用在耦合比较重,同程序用的场景下。而MQ作为另一种异步通信的手段也被普遍使用在各个业务中。常用的有:ActiveMQ、RabbitMQ、Kafka、RocketMQ。前两个一般作为企业级应用,主要特性是撑腰非常多的特性和规范。后两者是互联网级的,拥有更强力的吞吐和更高的性能,但是牺牲了很多MQ的特性。mq一般用在要求最终一直性即可的场景,比如用户注册和发积分这两个动作,能够用户注册以后直接返回前台胜利,然后发送注册胜利消息给mq系统,发积分动作订阅注册事情,消费mq的事情信息。

MQ最大的好处就是削峰和解耦,在RPC式的同程序用场景中,如果同一个逻辑中挪用A和B,那么在扩展的时刻,A和B肯定是需要同时扩展的,但是有了消息以后,A发送消息给B,及时B临时处置不了,也能够等到A峰值事后B继续处置,即使B短期无法匹配A的发送消息能力也没有联系。

澳门百老汇赌场拆分

一般项目都会经历数据量从小到大的变化,所以澳门百老汇赌场拆分也是依据差别的数据量已经差别的阶段进行相应的处置。

读写离别,这是大多数应用在遇到性能瓶颈第一要干的事。大多数互联网应用都是读占道90%以上的场景。所以一主多从,一个master做写,别的slave做读即可。但是这种主从模式也存在一些问题,比如有一些数据需要及时性比较高,就是在写入以后马上需要读到。因为主从同步是通过log异步复制,所以存在数据纷歧致窗口,这个时刻必须要通过强行读取主库来保证数据的安定,在开拓的时刻肯定要注意。

垂直分割,就是通过拆分将差别的业务放在差别的澳门百老汇赌场中,这样就能够减少单一澳门百老汇赌场的压力,提高整体性能。垂直分割要注意的是业务边界问题,边界问题就是有一个表,以为放在A中和放在B库中都适合。这个就要靠经验了,不克太过的考虑,因为本来不论你在之前分得有多好,在应用的迭代中,总会出现菲律宾赌场 娱乐城的找不到明确边界的表。这个问题在业务模块划分中也是一样。

水平分割,一般就是说sharding。将同一个表中的差别字段,拆分成差别的表,或者将同一张表按照hash或者业务字段分成差别的分片。这种一般需要DAL框架的撑腰,其中有TDDL、Cobar、Mycat等。主要就是通过框架让程序编写者对澳门百老汇赌场的拆分不可见,就像操作一个澳门百老汇赌场一样。不外现在的DAL框架还不克抵达这样的目的,特别是在跨库事务的场景下,一般都需要别的方式处置。

跨库事务/分布式事务

跨库事务一般都是通过最终一致性来解决,即不强求ACID都能满足,容许数据纷歧致的时间窗口,但是总会有一个时间点数据会到最终一致的状态。解决方案非常的多,不外核心原理都是一样,不外乎都是靠赔偿来完成的。

缓存的使用

计算机世界有一句名言:“计算机科学领域的任何问题都能够通过增加一个间接的中间层来解决”。缓存就是一种中间层。

使用缓存的场景非常非常的多,几乎到了你能想到的一切地方。这里我们讲通常的澳门百老汇赌场数据缓存

缓存一般有两种,local和remote,一般来说使用一种缓存即可,因为缓存虽好,但是维护缓存的更新和删除却是一件非常麻烦得事。一般缓存可分为读缓存(大多数场景)和写缓存(一般针对数据安定性比较低的场景)。

比如将澳门百老汇赌场中的数据读出时同时写入缓存中,下一次读数据的时刻就能够直接读取缓存中的数据,从而大大减小澳门百老汇赌场的压力,说起来很简单,本来这也存在很多种的架构,每种架构都有利弊,大家能够详细去了解。

写缓存,就是先将数据写入缓存中,然后一段时间再持久化,这样同样会提高效率,这种方案的问题在于如果这时刻宕机,局部数据将会遗失,所以适用于数据安定性较低的场景。

缓存虽然速度快,除了维护更新较为麻烦的是,内存也是较为昂贵的硬件,所以除了将热点数据存储在缓存中,一般缓存中维护数据的索引或者主要字段用于列表显示,真正的大而全的数据还需要别的方法解决。

静态化_澳门百老汇游戏官网资讯

  公布时间:2019-08-02 14:15:24   作者:华靖宇   我要议论

这篇文章主要介绍了构建互联网高性能WEB系统,总结分析了构建高性能WEB系统相关经验与常用技术,需要的朋友能够参考下

互联网开展至今各种应用层出不穷,用户量动辄上亿。所以如何构建一个优秀的高性能、高可靠的应用系统对每一个开拓者至关重要。本文将我所学到和在工作中使用到的一些方法概括总结,希望给别的同学起到一些借鉴作用,在以后的开拓中遇到类似的问题,能快速的找到解决方案。本人主要使用语言是JAVA,所以下面不做特别说明,都是使用JAVA语言

高性能的关键

要想做到高性能,我总结了三点:

  1. 缓存
    • DNS缓存
    • 澳门百老汇赌场缓存
    • 分布式缓存
  2. 拆分
    • 业务拆分
    • 澳门百老汇赌场拆分
  3. 异步
    • 网络异步
    • 磁盘异步
    • 使用消息

上面举了一些三点中常见的情况,无论什么地方遇到性能瓶颈,谨记这三点,大多数时刻都能找到解决方案。以下分别介绍在整个架构中各个方面对这三点的应用

无状态服务

说无状态服务我们首先要想到无状态工具,无状态工具简单的能够了解为没有Field的工具,比如model/entity工具就不属于无状态工具,因为他含有Field,比如典范MVC场景的**Controller,**Service就是无状态的,他们只含有method。有的也是有状态的,比如Structs2框架的Action,所以Structs2现在用得比较少了。有了无状态工具,我们才有可能构建无状态服务,因为要求链路中不包含有状态工具,所以我们每一次要求都是独立的,这样的架构有助于我们服务进行扩展。

无状态服务有时刻不可幸免的会遇到一些有状态的工具,比如最常见的就是session。因为http要求本身是无状态的,所以必须cookie和session配合使用,才能识别多次http要求属于同一用户。一般有两种方法解决:

  • 使用cookie存储
  • 使用分布式session服务

第一种就是将工具信息全部存储在cookie中,通过相应的算法等在服务端将cookie中的信息读出来。这些信息一般都会进行加密处置。
第二种方法,就是将session存储在分布式澳门百老汇赌场或者分布式缓存中,一般存在redis或者memcache中。那这种服务扩展会依赖第三方澳门百老汇赌场或缓存的能力。淘宝有类似的组件,开源世界也有基于memcache和redis的分布式session

无状态服务用到了拆分和缓存

业务拆分

无状态能够使应用服务水平扩展,但是当单个应用太大太臃肿时,有必要对应用进行拆分。垂直拆分即按业务拆分,比如电商系统中,按照订单系统,积分系统等进行拆分。拆分能够方便开拓,更方便扩展。系统大了以后,每个业务的访问量是纷歧样的,比如买家系统肯定比卖家系统访问量大得多,这时刻就能够只增加买家系统的机器即可。

除了按照业务的差别拆分成差别的系统以外,针对我们的应用分层也能够进行拆分,一般分为应用层、逻辑层和原子层。应用层就是各种数据、逻辑业务的组装,逻辑层含有大批可重用逻辑,原子层直接操作澳门百老汇赌场,一些基本的数据操作包含在其中。

不论以何种形式拆分,拆分以后的系统在物理层面上就离别开来,所以系统间的通信是拆分中最重要的问题所在。

RPC

在RPC服务之前已经许多系统通信的方法,比如RMI、WebService,但是RPC以更方便,更高效,跨平台的方式现在成为主流的通信手段。几乎每个大优乐国际娱乐平台 官方网站都有自己的RPC框架:淘宝的HSF、58的SCF,也有非常多优秀的开源框架:Dubbo、GRPC、Thrift等等。国内用dubbo的大优乐国际娱乐平台 官方网站也很多:京东、当当都是。

MQ

RPC挪用一般是用在耦合比较重,同程序用的场景下。而MQ作为另一种异步通信的手段也被普遍使用在各个业务中。常用的有:ActiveMQ、RabbitMQ、Kafka、RocketMQ。前两个一般作为企业级应用,主要特性是撑腰非常多的特性和规范。后两者是互联网级的,拥有更强力的吞吐和更高的性能,但是牺牲了很多MQ的特性。mq一般用在要求最终一直性即可的场景,比如用户注册和发积分这两个动作,能够用户注册以后直接返回前台胜利,然后发送注册胜利消息给mq系统,发积分动作订阅注册事情,消费mq的事情信息。

MQ最大的好处就是削峰和解耦,在RPC式的同程序用场景中,如果同一个逻辑中挪用A和B,那么在扩展的时刻,A和B肯定是需要同时扩展的,但是有了消息以后,A发送消息给B,及时B临时处置不了,也能够等到A峰值事后B继续处置,即使B短期无法匹配A的发送消息能力也没有联系。

澳门百老汇赌场拆分

一般项目都会经历数据量从小到大的变化,所以澳门百老汇赌场拆分也是依据差别的数据量已经差别的阶段进行相应的处置。

读写离别,这是大多数应用在遇到性能瓶颈第一要干的事。大多数互联网应用都是读占道90%以上的场景。所以一主多从,一个master做写,别的slave做读即可。但是这种主从模式也存在一些问题,比如有一些数据需要及时性比较高,就是在写入以后马上需要读到。因为主从同步是通过log异步复制,所以存在数据纷歧致窗口,这个时刻必须要通过强行读取主库来保证数据的安定,在开拓的时刻肯定要注意。

垂直分割,就是通过拆分将差别的业务放在差别的澳门百老汇赌场中,这样就能够减少单一澳门百老汇赌场的压力,提高整体性能。垂直分割要注意的是业务边界问题,边界问题就是有一个表,以为放在A中和放在B库中都适合。这个就要靠经验了,不克太过的考虑,因为本来不论你在之前分得有多好,在应用的迭代中,总会出现菲律宾赌场 娱乐城的找不到明确边界的表。这个问题在业务模块划分中也是一样。

水平分割,一般就是说sharding。将同一个表中的差别字段,拆分成差别的表,或者将同一张表按照hash或者业务字段分成差别的分片。这种一般需要DAL框架的撑腰,其中有TDDL、Cobar、Mycat等。主要就是通过框架让程序编写者对澳门百老汇赌场的拆分不可见,就像操作一个澳门百老汇赌场一样。不外现在的DAL框架还不克抵达这样的目的,特别是在跨库事务的场景下,一般都需要别的方式处置。

跨库事务/分布式事务

跨库事务一般都是通过最终一致性来解决,即不强求ACID都能满足,容许数据纷歧致的时间窗口,但是总会有一个时间点数据会到最终一致的状态。解决方案非常的多,不外核心原理都是一样,不外乎都是靠赔偿来完成的。

缓存的使用

计算机世界有一句名言:“计算机科学领域的任何问题都能够通过增加一个间接的中间层来解决”。缓存就是一种中间层。

使用缓存的场景非常非常的多,几乎到了你能想到的一切地方。这里我们讲通常的澳门百老汇赌场数据缓存

缓存一般有两种,local和remote,一般来说使用一种缓存即可,因为缓存虽好,但是维护缓存的更新和删除却是一件非常麻烦得事。一般缓存可分为读缓存(大多数场景)和写缓存(一般针对数据安定性比较低的场景)。

比如将澳门百老汇赌场中的数据读出时同时写入缓存中,下一次读数据的时刻就能够直接读取缓存中的数据,从而大大减小澳门百老汇赌场的压力,说起来很简单,本来这也存在很多种的架构,每种架构都有利弊,大家能够详细去了解。

写缓存,就是先将数据写入缓存中,然后一段时间再持久化,这样同样会提高效率,这种方案的问题在于如果这时刻宕机,局部数据将会遗失,所以适用于数据安定性较低的场景。

缓存虽然速度快,除了维护更新较为麻烦的是,内存也是较为昂贵的硬件,所以除了将热点数据存储在缓存中,一般缓存中维护数据的索引或者主要字段用于列表显示,真正的大而全的数据还需要别的方法解决。

静态化

对付大多数场景,我们的数据在肯定时间都是不会变化的,或者说即使变化,也只是页面的一小局部会发生变化,能够将稳定化的局部单独拿出来做静态化。比如京东商城的页面就是静态化的,静态化以后,数据不消每次都从缓存或者澳门百老汇赌场中取得,然后再封装成页面,而是直接要求返回静态页面,性能无疑提升了非常大。

除了以上常用的方法外,还要非常多的重要的方法:

  • CDN加速
  • DNS缓存
  • 页面缓存
  • 使用分布式存储
  • 使用多线程编写程序

相关文章

最新议论

条评论