前言

我们从一个问题引入今天的主题。

在日常业务开发中,我们可能经常听到 DBA 对我们说“不要”(注意:不是禁止)使用 join,那么为什么 DBA 对 join 这么抵触呢?是 join 本身有问题,还是我们使用的方式不对。

其实这涉及到 join 语句在 MYSQL 内部到底是怎么执行的。

这就是我们今天要讲的内容。

业界常用的服务注册与发现组件对比

了解服务注册与发现的基本原理后,如果你要在项目中使用服务注册与发现组件,当面对众多的开源组件该如何进行技术选型?

在互联网公司里,有研发实力的大公司一般会选择自研或者基于开源组件进行二次开发,但是对于中小型公司来说直接选用一款开源软件会是一个不错的选择。

常用的注册与发现组件有eureka,zookeeper,consul,etcd等,由于eureka在2018年已经宣布放弃维护,这里就不再推荐使用了。

业界开源组件

下面结合各个维度对比一下各组件。

组件优点缺点接口类型一致性算法zookeeper1.功能强大,不仅仅只是服务发现;
2.提供watcher机制可以实时获取服务提供者的状态;
3.广泛使用,dubbo等微服务框架已支持;1.没有健康检查;
2.需要在服务中引入sdk,集成复杂度高;
3.不支持多数据中心;sdkPaxosconsul1.开箱即用,方便集成;
2.带健康检查;
3.支持多数据中心;
4.提供web管理界面;不能实时获取服务变换通知restful/dnsRaftetcd1.开箱即用,方便集成;
2.可配置性强1.没有健康检查;
2.需配合三方工具完成服务发现功能;
3.不支持多数据中心;restfulRaft

从整体上看consul的功能更加完备和均衡。接下来以consul为例详细介绍一下。

Consul——值得推荐的服务注册与发现开源组件

简单认识一下Consul

Consul是HashiCorp公司推出的开源工,使用Go语言开发,具有开箱即可部署方便的特点。Consul是分布式的、高可用的、 可横向扩展的用于实现分布式系统的服务发现与配置。

Consul有哪些优势?

  • 服务注册发现:Consul提供了通过DNS或者restful接口的方式来注册服务和发现服务。服务可根据实际情况自行选择。
  • 健康检查:Consul的Client可以提供任意数量的健康检查,既可以与给定的服务相关联,也可以与本地节点相关联。
  • 多数据中心:Consul支持多数据中心,这意味着用户不需要担心Consul自身的高可用性问题以及多数据中心带来的扩展接入等问题。

Consul的架构图

Consul架构

Consul 实现多数据中心依赖于gossip protocol协议。这样做的目的:

  • 不需要使用服务器的地址来配置客户端;服务发现是自动完成的。
  • 健康检查故障的工作不是放在服务器上,而是分布式的。

Consul的使用场景

Consul的应用场景包括服务注册发现服务隔离服务配置等。

服务注册发现场景中consul作为注册中心,服务地址被注册到consul中以后,可以使用consul提供的dns、http接口查询,consul支持health check。

服务隔离场景中consul支持以服务为单位设置访问策略,能同时支持经典的平台和新兴的平台,支持tls证书分发,service-to-service加密。

服务配置场景中consul提供key-value数据存储功能,并且能将变动迅速地通知出去,借助Consul可以实现配置共享,需要读取配置的服务可以从Consul中读取到准确的配置信息。

本次面试答案,以及收集到的大厂必问面试题分享:

本次面试答案,以及收集到的大厂必问面试题分享:

[外链图片转存中…(img-zcstrn9r-1621914419670)]

资料领取方式:戳这里即可免费下载

Java面试必问的HashMap,java软件工程师面试话术相关推荐

  1. 面试必问一:Java 中 == 和 equals 的区别你知道吗

    面试必问一:Java 中 == 和 equals 的区别你知道吗 前言 关于这个问题,一般初中级面试中都会遇到,还记得我当初实习找工作的时候也遇到了这个问题,现在都还记得自己是怎么回答的:== 是基本 ...

  2. Java 面试必问题目,Java 后端校招面试题

    字节跳动一面: 自我介绍,主要讲讲做了什么和擅长什么 看你项目做 Spring 比较多, 问一下 Spring 相关的东西, IoC 是什么概念? Bean 的默认作用范围是什么?其他的作用范围? 索 ...

  3. Java年薪30W+面试必问知识之《2020年面试宝典总纲》

    前言 一份月薪30K的java开发岗位工作要求是怎样的呢?面试都会问到哪些呢? 任职要求: 1.计算机或相关专业本科(或以上)学历,具备3年以上Java服务端开发经验,熟悉常用的Java开源框架,如熟 ...

  4. 面试必问:用 Java 写一个内存泄漏程序

    编译:ImportNew/唐尤华 原文链接:stackoverflow.com/questions/6470651/creating-a-memory-leak-with-java 问题: 刚参加的一 ...

  5. hashmap转红黑树的阈值为8_面试必问的HashMap,一次彻底帮你搞定HashMap源码

    HashMap结构 数组+链表+红黑树 链表大于8转红黑树,红黑树节点数小于6退回链表. 存放的key-value的Node节点 static class Node implements Map.En ...

  6. mysql映射成hashmap_大厂面试必问!HashMap 怎样解决hash冲突?

    HashMap冲突解决方法比较考验一个开发者解决问题的能力. 下文给出HashMap冲突的解决方法以及原理分析,无论是在面试问答或者实际使用中,应该都会有所帮助. 在Java编程语言中,最基本的结构就 ...

  7. 稀疏多项式的运算用链表_用最简单的大白话聊一聊面试必问的HashMap原理和部分源码解析...

    HashMap在面试中经常会被问到,一定会问到它的存储结构和实现原理,甚至可能还会问到一些源码 今天就来看一下HashMap 首先得看一下HashMap的存储结构和底层实现原理 如上图所示,HashM ...

  8. 看完946页“JAVA高级架构面试必问”,金九银十社招全拿下

    前言 我本科毕业后在老东家干了两年多,老东家算是一家"小公司"(毕竟这年头没有 BAT 或 TMD 的 title 都不好意思报出身),毕业这两年多我也没有在大厂待过,因此找坑的时 ...

  9. java中的静态、动态代理模式以及Spring中的CgLib动态代理解读(面试必问)

    java中的静态.动态代理模式以及Spring中的CgLib动态代理解读(面试必问) 静态代理 动态代理 CgLib动态代理     基础知: 反射知识 代理(Proxy)是一种设计模式,提供了对目标 ...

最新文章

  1. 直方图均衡化opencv(彩色、灰度图)
  2. 一个JS对话框,可以显示其它页面,
  3. node--非阻塞式I/O,单线程,异步,事件驱动
  4. python打破循环_python – 为什么“c.execute(…)”打破循环?
  5. win10安装misql8_Win10安装MySQL8压缩包版的教程
  6. 成员变量和类变量的区别:
  7. 前端学习(2615):数据映射map
  8. devops最佳实践_DevOps最佳实践如何改善团队动力
  9. 数据结构之二叉排序树
  10. Spring Boot Admin工程搭建(Eureka)
  11. docker登录mysql数据库_从docker容器连接到远程MySQL数据库
  12. Sql语句实现某列每条记录与同列最大值的差值计算
  13. 字节还有打游戏、听音乐这种神仙工作?
  14. String 将GBK转UTF-8
  15. python opencv 中文_OpenCV-Python在图片上输出中文
  16. 第一行代码android第三版pdf,第一行代码:Android PDF 下载
  17. Vue中img的动态src不显示图片
  18. 什么叫运营---一个人,一张网,一艘船,独钓寒江雪!
  19. html雪花飘落效果,使用js实现雪花飘落效果
  20. 线段覆盖 java,南邮 OJ 1407 线段覆盖

热门文章

  1. Git版本管理工具使用详细介绍
  2. OpenSSL RSA Key的生成和转换
  3. 给图片添加水印php视频,php给图片添加水印实例代码
  4. 服务器系统2012设置,Windows Server 2012服务器管理器图文详解
  5. react表单双向绑定处理
  6. 哪个视频软件可以消重 批量修改视频md5值
  7. Redis 过期 key 删除,那些不得不说的事情!
  8. YOLOv5-4.0 源代码导读-持续更新
  9. 零基础小白如何提高学Python的效率?
  10. 常见的管理学原理法则