写点什么

2021 年 Java 面经分享:mysql 创建数据表

发布于: 2021 年 07 月 31 日

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

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


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


常用的注册与发现组件有 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 中读取到准确的配置信息。

Ending

Tip:由于文章篇幅有限制,下面还有 20 个关于 MySQL 的问题,我都复盘整理成一份 pdf 文档了,后面的内容我就把剩下的问题的目录展示给大家看一下,点击这里即可解锁全部内容!


如果觉得有帮助不妨【转发+点赞+关注】支持我,后续会为大家带来更多的技术类文章以及学习类文章!(阿里对 MySQL 底层实现以及索引实现问的很多)




吃透后这份 pdf,你同样可以跟面试官侃侃而谈 MySQL。其实像阿里 p7 岗位的需求也没那么难(但也不简单),扎实的 Java 基础+无短板知识面+对某几个开源技术有深度学习+阅读过源码+算法刷题,这一套下来 p7 岗差不多没什么问题,还是希望大家都能拿到高薪 offer 吧。

用户头像

还未添加个人签名 2021.07.29 加入

还未添加个人简介

评论

发布
暂无评论
2021年Java面经分享:mysql创建数据表