当前位置: 首页 > 后端技术 > Java

java开发技术之响应式系统的四大特点

时间:2023-04-01 21:49:06 Java

1.什么是响应式系统?响应式系统是一种可以应用在任何地方的架构,无论是小型博客页面还是复杂的在线购物系统,都可以使用响应式架构。总的来说,响应式系统有四个显着的特点:?响应式?弹性?弹性?消息驱动它们之间的关系:消息驱动是手段,弹性和弹性是形式,最终即时响应是它的价值。接下来,我们将一一介绍这四个特性。2.四大特点2.1即时响应(responsive)即时响应的特点就是一个字,快!现在4G的普及,100M、100M带宽的使用,CPU运算能力的提升,都在降低用户对一个系统的耐心。一个网页5s还没加载完,用户已经觉得体验很差了,30s还没加载完,那么你可能会失去这个用户。因此,我们需要构建一个健壮的、即时的响应系统,能够快速响应,尤其是在一些高并发的场景下,响应延迟能够保持在一个合理的范围内,这是最重要的。为了实现这个目标,用到了很多具体的技术,比如异步加载、预加载等,另外还涉及到弹性、回弹等一些原则性的问题。2.2弹性(elastic)弹性实际上是指系统可以随时动态扩展。例如,电子商务网站通常活跃用户有限,所需的服务器数量足以支持日常服务。没必要多买,毕竟要花钱。一旦遇到大促,系统流量会在短时间内爆发。这时候就需要能够随时随地方便地扩展系统。这就是系统的灵活性。Nginx负载均衡其实就是一种扩展手段。现在很多中小型公司可能会采用云服务。如果使用云服务,一般都可以很方便的实现动态扩展。2.3弹性(resilience)弹性是指当系统遇到故障时,仍然可以对外提供服务。之前宋哥给大家分享SpringCloud的时候,Hystrix的功能之一就是容错。当一个服务崩溃时,不会拖累其他服务。可以通过服务降级和隔离来保证弹性。弹性还要求当系统出现故障时,能够自动重试。其实大家看到resilience的resilience这个词。不知道大家还记不记得在SpringCloud系统中,用来替代Hystrix的工具叫做resilience4j,所以如果了解了Hystrix的功能,大概就知道resilience是什么了。2.4消息驱动(messagedriven)消息驱动是一种具体的实现方式。在分布式系统中,我们需要解耦、隔离服务,提高可扩展性。为了实现这个目标,消息驱动是最好的选择。因为只有消息驱动才能同时满足即时响应、弹性和弹性的要求。有些朋友在学习微服务的时候,可能会看到一个名词,叫做消息驱动的微服务。消息驱动是指发件人只需要将邮件内容丢给消息中间件,其他的不用管。邮件服务器会自动从消息中间件中读取邮件信息并发送邮件。如果发送失败,事务、回滚等操作都由邮件服务器自己处理,发送方直接将邮件丢出去,很好的实现了解耦。这就是我们常说的响应式系统的四个特征。3、我们身边的响应式系统,其实离我们并不遥远。不代表使用WebFlux、Gateway、异步Servlet就是响应式系统。其实并无必然联系。以上都是响应式系统的实现。一个特定的计划,只有特定的技术。举一个很简单的消息驱动微服务的案例,如下图所示:引入消息中间件RabbitMQ/Kafka后,可以很好的实现A服务和B服务的解耦,同时,消息RabbitMQ/Kafka自带的消费失败。重试功能还可以提高系统的容错性和可靠性。作者:江南一点雨