为什么80%的码农都做不了架构师?>>>   hot3.png

策略:

静态化:根据文件以及内容特征以多个时间框架为间隔进行相对静态化以及如何实现绝对静态化;

缓存:多级以及区分对象,策略。工具有:SQUID,MEMCACHE等;

镜像:linux中的rsync或ftp或其它;

集群:两种方式,分工合作与机群;

内容更新:在字节级别上控制双向通信的流量负载;删减一切不必要的通信过程和通信内容。

涉及到的技术:

JAVA 异步、非阻塞通信:NIO, IO, 缓冲区与通道机制,两者缓冲机制的区别。从提供者的角度看,NIO仍然是一种同步通信提供者,但是提供了一种非阻塞的调用方法。有文章提到底层实现其实是LINUX 的 SELECTOR和 WINDOWS 的 WAITFOROBJECT,估计都是通过在内核另起线程专司轮询其职实现的。目前理解,除去SUN自己提供的NIO,肯定有第三方的通信包,提供非阻塞,异步的通信职能。有待进一步探索!!!

虚拟机:SUN为SERVER端与CLIENT端提供了不一样的HOTSPOT,以适应不同并发级别上的字节码执行环境。字节码的优化。动态与静态编译各自的优缺点;

关于NIO与IO的性能孰优孰劣的网上争论,焦点似乎只在如何使用线程。我的观点是当涉及到高性能的时候,不要总是以理想化的思维方式去思考问题。我们之所以研究性能,正是因为我们遇到了障碍。比方说,不能响应,或者系统崩溃,或者慢。而发生这些都是因为遇到了资源甁颈。所以,正确的思考角度应该是从资源出发的。处理器、内存与外存,以及网卡,都可以成为资源的甁颈。有一种观点,认为为每个处理器核分配一个(或半个)线程是一种合理的线程策略。我认为一个肯定不行,因为所有的核几乎不可能在同一个时间只处理同一种任务(请求接收)。即使这样的情况发生了,它也不是最佳的处理模式,因为在这种情况下,系统所有的能力将被用来承担请求的接收,已经没有空余的能力可以完成请求接收以后接下来的任务。而如果接下来的任务不能被完成的话,所有的线程都将被阻塞并且被阻塞的线程堆栈将最终达到系统极限而至系统再不能响应任何新的请求。所以,为每个核分配少于一个线程,把剩下来的处理器资源留给其它任务,也许才是真正可行的策略。但是有一个事实必须被承认,那就是任何系统只能承担有限的请求负载。在承认这个事实的基础上,设计目标可以变得更明确,那就是系统处理能力的最大化。

如果说异步IO因为减少了接收线程的数量所以节省了一部分系统资源的话,根本原因其实在于线程的使用策略是正确的。其实,多于处理器核(或流水线)的并发线程数量根本就没有任何意义。

在长连接的情况下,为每个会话分配一个线程的思想看起来好象跟为每个请求分配一个线程的思想差不多。其实浪费了响应包从服务器送到客户机加上客户机发出第二个请求并送到服务器即一个往返长度的时间。我相信,在大多数情况下,这个时间都是以秒或者分秒为计算的时间。对于内存短缺而非处理器资源短缺型应用来说,在高并发的情况下,长连接节省下来的连接开销肯定要远小于它占着茅坑不拉屎所造成的损失大得多。

后面要接着研究的是MINA,ACE,JAWS。这些都是目前非常优秀的IO框架。

LINUX 下面的 SELECTOR 与 WINDOWS 下面的 WAITFOROBJECT 也是需要继续研究的东西。

在服务器推技术上,有个COMET PUSHLET也要看。好象是使用AJAX轮询或者IFRAME(HTMLFILE) 实现推技术模拟。

负载均衡方面,在LINUX上面有一个LVS即LINUX虚拟服务器,使用了NAT, IP TUNNEL, DIRECT ROUTING 三种模型进行请求路由,即第四层交换。这也是需要好好研究的东西。

转载于:https://my.oschina.net/digerl/blog/10805

对高性能Web服务的研究笔记相关推荐

  1. Centos 搭建高性能WEB服务 Nginx+PHP+MYSQL+Discuz论坛

    Centos 搭建高性能WEB服务 Nginx+PHP+MYSQL+Discuz论坛 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,它已经在该站点运 ...

  2. Linux集群服务知识点总结及通过案例介绍如何实现高性能web服务

    转自:http://guodayong.blog.51cto.com/263451/1201101 一:集群相关概念及知识点介绍: LVS(Linux Virtual System) 本项目在1998 ...

  3. Linux集群服务知识点总结及通过案例介绍如何实现高性能web服务(三)

    三:通过corosync+pacemaker实现web服务高可用,主要实现步骤: 既然给web应用服务器做高可用,那么httpd进程就不能开机自动运行,而且当前httpd服务属于停止状态,有coros ...

  4. 玩转CVM:Web服务搭建

    本教程将讲解如何依托腾讯云主机(CVM),搭建前沿的安全高性能Web服务.具体将包括:配置域名解析.SSL证书申请等Web服务的前置依赖,以及安装部署最新版Nginx Web服务器,并支持当前最新的T ...

  5. 云原生Web服务框架ESA Restlight

    云原生Web服务框架ESA Restlight ESA Stack(Elastic Service Architecture) 是OPPO云计算中心孵化的技术品牌,致力于微服务相关技术栈,帮助用户快速 ...

  6. ATL服务器:用 Visual C++创建的高性能的Web应用程序和XML Web 服务

    C++是很多网络中繁忙站点的核心.这为构建中间层企业逻辑提供了高度的性能基础,经常用于扩展Web 服务器和动态地生成HTML.今天使用Internet信息服务(IIS)和Visual Studio?的 ...

  7. wcf 高性能服务器,优化 WCF Web 服务性能

    优化 WCF Web 服务性能 06/08/2017 本文内容 WCF 服务公开许多影响性能的配置参数. 本主题提供有关为这些配置参数设置最佳值以提高 WCF 服务性能的常规指南. 实现后端 WCF ...

  8. 一文讲透推荐系统提供web服务的2种方式

    作者丨gongyouliu 编辑丨zandy 来源 | 大数据与人工智能(ID: ai-big-data) 推荐系统是一种信息过滤技术,通过从用户行为中挖掘用户兴趣偏好,为用户提供个性化的信息,减少用 ...

  9. lvs服务器需要开启web服务么_如何检测 Web 服务请求丢失问题

    导读 『StabilityGuide』是阿里多位阿里技术工程师共同发起的稳定性领域的知识库开源项目,涵盖性能压测.故障演练.JVM.应用容器.服务框架.流量调度.监控.诊断等多个技术领域,以更结构化的 ...

最新文章

  1. 利用OpenCV识别玻璃纤维织物劈缝缺陷
  2. 无法启动outlook “外出时的助理程序”
  3. iOS 关于.tbd与.dylib用法
  4. webpack 读取文件夹下的文件_webpack基本介绍及使用
  5. MariaDB多源复制环境搭建(多主一丛)
  6. 利用SQL移动硬盘文件(转于zjcxc)
  7. 在CentOS 7上安装使用Kubernetes:管理云平台多个主机上的容器化应用
  8. 在保护继承中基类的共有成员_C++面向对象:C++ 继承
  9. Android Studio实现简单的图书馆订座系统
  10. optisystem仿真 光源线宽与干涉
  11. file_contexts 踩坑
  12. Ubuntu 16.04静态IP设置
  13. N2O游戏大师 V2.36.75.803 官方安装版
  14. 猎头猎取人才会注重人才的哪些点?
  15. matlab怎么画map图,用MATLAB自带的worldmap及相关函数画地图
  16. /给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[
  17. Ansys在高分屏电脑下的显示以及Fluent的图形显示界面黑屏问题
  18. 《MATLAB 神经网络43个案例分析》:第5章 基于BP_Adaboost的强分类器设计——公司财务预警建模
  19. python 作图:heatmap
  20. Kudo介绍 + Spark\Python\Scala开发Kudu应用程序

热门文章

  1. Material-UI使用
  2. 线上飙升800%,load达到12的解决过程
  3. sql 脚本编写之路 常用语句(一) 1.用一个表中的某一列更新另外一个表的某些列:...
  4. 修改文件的所属用户和所属用户组
  5. 3.ELK 之elasticsearch CRUD
  6. 吴恩达深度学习笔记2.2 logistic回归
  7. 20171019_Python学习第四天
  8. 命令行参数 - 和 -- 的区别
  9. firefox input 缓存
  10. leetcode valid number