一、Netty主要是应用哪些方面Netty有什么特点?
Netty是一个NIO客户端服务器框架,可快速轻松地开发网络应用程序,例如协议服务器和客户端。它极大地简化和简化了网络编程,例如TCP和UDP套接字服务器。
“快速简便”并不意味着最终的应用程序将遭受可维护性或性能问题的困扰。Netty经过精心设计,结合了许多协议(例如FTP,SMTP,HTTP以及各种基于二进制和文本的日式协议)的实施经验。结果,Netty成功地找到了一种无需妥协即可轻松实现开发高并发系统,高性能,高稳定性和灵活性的方法。
二、Netty特性:
1、Netty可构建高性能、低延时的各种Java中间件,例如MQ、分布式服务框架、ESB消息总线等,Netty主要作为基础通信框架提供高性能、低子延时的通信服务;
2、Netty是公有或私有协议栈的基础通信框架,例如可以基于Netty构建异步、高性能的webSocket协议栈;
3、各领域应用如大数据、游戏等,Netty作为高性能的通信框架,用于内部各模块的数据分发、传输和汇总等等,实现了模块之间的高性能通信。
三、那么想提升高并发系统的设计和开发能力,有2个方面:
—个是系统的学习Netty相关理论;并不断根据理论去实战,(这里分享一个Netty开发入门到精通的教程)
—个是拢—个目标系统,不断想办法去提升他的性能。
前者是后者的理论基础。
如果想从事一个高并发系统开发的岗位,要学习的相关技术其实是很多的,这些技术核心就是解决高并发情况下如何保持系统的高可用和低延迟。
以ava工程师为例,互联网程序员面试中经常会考察的内容包括:
1)架构设计:
高可用与稳定性、事务—致性、多副本—致性、CAP理论。
)相关技术:
多线程((JUC/AQS/线程池)、RPC调用及框架〈如Thrift)、NIO及NIO框架(如Netty)、高并发框架(如Disruptor)、微服务框架(SpringBoot)、微服务治理(Spring Cloud)、数据库相关技术(如:索引优化、分库分表、读写分离)、分布式缓存(如redis)、消息中间件系统(如RabbitMQ)、容器技术(如docker)。
(3)工具:
系统性能查看(top、uptime、vmstat、iostat)、压测工具(如ab、locust、Jmeter、go).线程分析(如jps、jstack)等。
当然,一开始,我们不可能逐—把这些技能全部掌握,我们可以从一个实际项目入手,不断的把这些技术用上去,发现哪些知识不足,再去补充相关的知识。
“如何设计一个好的秒杀系统“,一定是互联网大厂面试中最常问的一个问题。所以从设计一个秒杀系统开始实践,是个不错的选择。
秒杀系统的特点:
1)瞬时并发量人
秒杀时会有大量用户在同一时间进行抢购,瞬时并发访问量突增10倍,甚至100倍以上都有。
2)库存量少
—般秒杀活动商品量很少,这就导致了只有极少量用户能成功购买到。
)业务简单
流程比较简单,—般都是下订单、扣库存、支付订单。
设计秒杀系统的关键点:
1)限流
由于活动库存量一般都是很少,对应的只有少部分用户才能秒杀成功。所以我们需要限制大部分用户流量,只准少量用户流量进入后端服务器。
(2)削峰
秒杀开始的那一瞬间,会有大量用户冲击进来,所以在开始时候会有一个瞬间流量峰值。如何把瞬间的流量峰值变得更平缓,是能否成功设计好秒杀系统的关键因素。实现流量削峰填谷,一般的采用缓存和MQ中间件来解决。
()异步
秒杀其实可以当做高并发系统来处理,在这个时候,可以考虑从业务上做兼容,将同步的业务,设计成异步处理的任务,提高网交占日的整体可用性。
)缓存
秒杀系统的瓶颈主要体现在下订单、扣减库存流程中。在这些流程中主要用到OLTP 的数据库,类似 MySQL、Oracle。由于数据库底层采用B+树的储存结构,对应我们随机写入与读取的效率,相对较低。如果我们把部分业务逻辑迁移到内存的缓存或者Redis 中,会极大的提高并发效率。
从0到1搭建一个秒杀系统,也并不容易,涉及到很多前端、后端、中间件的技术。这个跟其实是所有公司的工作常态,大部分时间也是在搭架子,真正做技术优化的时间并不多,经常是在业务量突增或者大促活动来临时,集中搞一波性能优化。
所以,如果没有实际的高并发项目可做,自己弄个秒杀系统自娱自乐也是不错的。
搭建系统->压测->发现问题->学习知识->优化系统,通过这样的循环,相信你一定既能体验到学习的乐趣,同时实力也大幅提升。