分布式的网络系统采用什么技术
分布式系统是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调♟的系统。
1、副本(Replica)是分布式系统最常见的概念之一,指分布式系统对数据和服务提供的一种冗余。在常见的分布式系统中,为了对外提供高可用的服务,我们往往会对数据和服务进行副本处理。
1)数据副本指在不同节点上持久同一份数据,当某一个节点上存储的数据丢失时,可以从副本上读取到该数据,这是解决☾分布式系统数据丢失问题的有效手段。
2)服务副本指多个节点提供同样的服务,每个节点都有能力接受来自外部的请求并进行相应的处理。
2、并发性
在程序运行过程中的并发性操作是非常常见的行为,例如同一个分布式系统中的多个节点,可能会并发地操作一些共享的资源,如何准确并高效的协调分布式并发操作也成为了分布式系统架构与设计中最大的挑战之一。
3、全局时钟
分布式系统是有一系列在空间上随意分布的多个进程组成的,在这些进程之间通过交换消息来进行相互通信。因此,在分布式系统中,很难定义两个事件究竟谁先谁后,原因就是↔分布式系统缺乏一个全局♚的时钟序列控制。
4、故障总会发生
任何在设计阶段考虑到的异常情况,一定会在系统实际运行中发生,并且,在系统实际运行过程中还会遇到很多在设计时未能考虑到的异常故障。所以,除非需求指标允许,在系统设计时不能放过任何异常情况。
rocketmq怎么防止消息重复消费
通过消费端的幂等性防止重复消费。消息的消费,最后都对应的是数据库的操作,只要在消息消费的时候,判断一下数据库中是否已经消费过了这条消息,就可以保证幂等性了,例如使用唯一索引,保证一条消息只被消费一次。
rabbitmq优势
优势:支持集群化、高可用部署架构、消息高可靠支持
复杂系统的解耦;
复杂链路的异步调用
瞬时高峰的削峰处理。
这里提一下RocketMQ,是阿里开源的,经过阿里的生产环境的超高并发、高吞吐的考验、性能卓越、同时支持分布式事务等特殊场景。关键是它基于java开发,可以进行二次开发。
同时kafka也是一款消息中间件,它的优势在于专为✃超高吞吐量的实时日志采集、实时数据同步、实时数据计算等场景来设计。
分布式、中间件和消息队列到底是怎么的一种
分布式就是不部署在一个进程中,比如多台机器,甚至同台机器的不同进程中。
中间件除了自己写的代码和一些工具类库都可以叫中间件,比如数据库,开发框架,缓存,队列等
消息队列就是一个中间件,有生产的有消费的还有个消息暂存的,比如超市货架,超市往货架放东西,顾客取东西,货架就是暂存货物。
MQ是什么符号
是消息队列,是基础数据结构中“先进先出”的一种数据。
是指把要传输的数据(消息)放在队列中,用队列机制来实现消息传递——生产者产生的消息并把消放入队列,然后由消费者去处理。消费者可到指定队列拉取消息,或者订阅相应队列,由MQ服务端给其推送消息。
对于MQ来说,其实不管是RocketMQ、kafka还是其他消队列,它们的本质都是一样的。