云图业务层以Java 技术栈为主,其中很多Web 服务基于同步阻塞式Java Servlet,部分服务基于异步Servlet。同步模型易于开发和问题追踪,但难以平稳应对高并发场景,虽然Servlet 3.0 支持在非容器线程中处理请求,帮助尽快释放容器线程池中的线程,但由于其底层I/O 依旧是阻塞操作(InputStream/OutputStream) , 在将结果写回响应流时仍会阻塞处理线程。
如果业务包含阻塞逻辑,在面对高并发场景时压力只是从容器线程池转移到业务自定义线程池。Servlet 3.1 支持读写Socket 时不阻塞线程(NIO),但由于围绕着HTTP 请求响应语义模型来设计, 在接口设计上并非纯粹异步,Tomcat 等Servlet 容器无法最大程度发挥NIO 优势。
以上内容摘自《高德技术2020年刊合集》电子书,点击https://developer.aliyun.com/topic/download?id=1135可下载完成版
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。