Java基础代码讲解,面试题附答案

2021/7/3 12:23:13

本文主要是介绍Java基础代码讲解,面试题附答案,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

### NameServer的部署 关于NameServer,我们之前的文章已经详细讲解过了集群化的内容,这里直接把它部署到三台机器上,作为一个高可用集群 ### Broker的部署 Broker的部署我们之前也有讲到过,主要使用的是4.5版本后的Dledger自动化切换主从的集群 Broker与NameServer之间的通信协议是什么呢?http、rpc还是tcp呢? 其实它们之间采用的是TCP长连接通信,也就是说**Broker会跟每个NameServer建立TCP长连接,然后定时通过TCP长连接发送心跳请求过去。** ### **访问MQ的系统(生产者和消费者)的部署** 一定会有大量的系统访问RocketMQ,因为RocketMQ就是为此而生的,有些系统自己本身既是生产者又是消费者,所以这些系统的部署也要考虑进去。 对这些系统部署的考虑,其实不应该是搞MQ的部门来考虑的,如果系统本身是自己公司的,可以提出一些建议,让生产者和消费者都集群化部署,保证高可用。但如果是第三方系统,那就无法插手了,我们能做到的只有考虑第三方系统崩溃,无法与MQ正常通信的情况下,如何让MQ正常运转。 ### Topic是什么 Topic是mq的核心数据模型,如果直接翻译是主题的意思,但是听到主题的解释,是不是一脸懵逼,是不是瞬间想到的是手机主题,电脑主题。 所以它不能直译,它表达的就是一个**数据集合**的含义,集合的是同一类的数据,不同类型的数据存到不同的Topic中。 所以系统无论是要写入消息还是读取数据,最开始都是要先定义Topic的,然后再从定义的Topic中获取同类型的数据。 **那么Topic是如何在Broker中存储的呢?** 存储的方式其实就是分布式存储。我们在定义Topic的时候指定它里面的数据分布到多台的Broker上进行存储,这里要注意的一点是,实际上分布的对象是MasterBroker,SlaveBroker会向MasterBroker拉取数据,作为一个副本存在。而Broker在向NameServer发送心跳的时候,会把Topic存储在哪些Broker中的信息告诉NameServer。 ### 生产者如何发送消息给Broker 前边我们聊过,发送消息前首先是定义Topic,然后发送消息的时候是要指定你要发送到哪个Topic中去的。 既然我们知道了要发送到哪个Topic中,下一步就是要定位Topic的位置,如何定位呢?就是与NameServer建立Tcp长连接,定时拉取注册信息,可以获取到这个Topic目前被分配到哪些Broker中。然后就可以根据负载均衡算法,选定一台Broker(具体的负载均衡算法后边文章再介绍)。 选定了Broker后,就可以再与Broker建立Tcp长连接,通过Tcp长连接发送消息给Broker中的Topic。 而Broker在接收到消息后,就会把消息存储到磁盘中,再往后就是SlaveBroker与MasterBroker数据同步,形成副本,保证高可用了。 整个过程就是这样的。 ### 消费者如何从Broker上消费消息 说完了生产者发送消息的过程,我们再来聊聊消费者消费消息的过程。 其实消费者消费消息的过程和生产者是类似的,同样第一步也是定义Topic,然后从NameServer获取信息,定位到Topic所在的多个Broker,之后负载均衡定位到要访问的Broker,与Broker建立连接获取消息。 这里唯一不同的就是,再获取消息的时候是可能在MasterBroker上获取的,也可能在SlaveBroker上获取,要依据当时的情况而定。 ### 整体架构总结 最后我们再来看一看这套架构,是可以实现完全的高可用的。 NameServer集群化部署,Broker集群化部署,还可以通过Dledger自动化切换主从,生产者消费者也是集群部署,随便挂了一台不受影响。 而且这套架构也不怕高并发,高并发下的消息可以分布到多个Broker下处理,减少系统压力。 然后我们的集群可以存储海量的消息,因为存储方式是分布式存储的。 最后,这套架构是具有可扩展性的,如果业务需求并发量增大,也是可以扩展Broker的数量以支持更高的并发和更大的存储的。 这样我们的RocketMQ的生产部署架构就算完成了。 好了,今天就说到这里,欢迎小伙伴们一起走入消息中间件的世界。 ### 最后 小编在这里分享些我自己平时的学习资料,由于篇幅限制,pdf文档的详解资料太全面,细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!**有需要的程序猿(媛)可以关注+点赞,[点击这里免费获取](https://docs.qq.com/doc/DSmxTbFJ1cmN1R2dB)** **程序员代码面试指南 IT名企算法与数据结构题目最优解** 这是” 本程序员面试宝典!书中对IT名企代码面试各类题目的最优解进行了总结,并提供了相关代码实现。针对当前程序员面试缺乏权威题目汇总这一-痛点, 本书选取将近200道真实出现过的经典代码面试题,帮助广“大程序员的面试准备做到万无一失。 “刷”完本书后,你就是“题王”! ![image.png](http://www.www.zyiz.net/i/li/?n=2&i=images/20210703/1625282968494790.jpg) **《TCP-IP协议组(第4版)》** 本书是介绍TCP/IP协议族的经典图书的最新版本。本书自第1版出版以来,就广受读者欢迎。 本书最新版进行」护元,以体境计算机网络技不的最新发展,全书古有七大部分共30草和7个附录:第一部分介绍一些基本概念和基础底层技术:第二部分介绍网络层协议:第三部分介绍运输层协议;第四部分介绍应用层协议:第五部分介绍下一代协议,即IPv6协议:第六部分介绍网络安全问题:第七部分给出了7个附录。 ![image.png](http://www.www.zyiz.net/i/li/?n=2&i=images/20210703/1625282968932734.jpg) **Java开发手册(嵩山版)** 这个不用多说了,阿里的开发手册,每次更新我都会看,这是8月初最新更新的**(嵩山版)** ![image.png](http://www.www.zyiz.net/i/li/?n=2&i=images/20210703/1625282969714288.jpg) **MySQL 8从入门到精通** 本书主要内容包括MySQL的安装与配置、数据库的创建、数据表的创建、数据类型和运算符、MySQL 函数、查询数据、数据表的操作(插入、更新与删除数据)、索引、存储过程和函数、视图、触发器、用户管理、数据备份与还原、MySQL 日志、性能优化、MySQL Repl ication、MySQL Workbench、 MySQL Utilities、 MySQL Proxy、PHP操作MySQL数据库和PDO数据库抽象类库等。最后通过3个综合案例的数据库设计,进步讲述 MySQL在实际工作中的应用。 ![image.png](http://www.www.zyiz.net/i/li/?n=2&i=images/20210703/1625282969892052.jpg) **Spring5高级编程(第5版)** 本书涵盖Spring 5的所有内容,如果想要充分利用这一领先的企业级 Java应用程序开发框架的强大功能,本书是最全面的Spring参考和实用指南。 本书第5版涵盖核心的Spring及其与其他领先的Java技术(比如Hibemate JPA 2.Tls、Thymeleaf和WebSocket)的集成。本书的重点是介绍如何使用Java配置类、lambda 表达式、Spring Boot以及反应式编程。同时,将与企业级应用程序开发人员分享一些见解和实际经验,包括远程处理、事务、Web 和表示层,等等。 ![image.png](http://www.www.zyiz.net/i/li/?n=2&i=images/20210703/1625282970513042.jpg) **JAVA核心知识点+1000道 互联网Java工程师面试题** ![image.png](http://www.www.zyiz.net/i/li/?n=2&i=images/20210703/1625282970149805.jpg) ![image.png](http://www.www.zyiz.net/i/li/?n=2&i=images/20210703/1625282971598642.jpg) **企业IT架构转型之道 阿里巴巴中台战略思想与架构实战** 本书讲述了阿里巴巴的技术发展史,同时也是-部互联网技 术架构的实践与发展史。 ![image.png](http://www.www.zyiz.net/i/li/?n=2&i=images/20210703/1625282971750860.jpg)

这篇关于Java基础代码讲解,面试题附答案的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程