一、背景

我们日常在电商网站购物时经常会遇到一些高并发的场景,例如电商 App 上经常出现的秒杀活动、限量优惠券抢购,还有我们去哪儿网的火车票抢票系统等,这些场景有一个共同特点就是访问量激增,虽然在系统设计时会通过限流、异步、排队等方式优化,但整体的并发还是平时的数倍以上,为了避免并发问题,防止库存超卖,给用户提供一个良好的购物体验,这些系统中都会用到锁的机制。

对于单进程的并发场景,可以使用编程语言及相应的类库提供的锁,如 Java 中的 synchronized 语法以及 ReentrantLock 类等,避免并发问题。

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

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

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

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

写在最后

很多人感叹“学习无用”,实际上之所以产生无用论,是因为自己想要的与自己所学的匹配不上,这也就意味着自己学得远远不够。无论是学习还是工作,都应该有主动性,所以如果拥有大厂梦,那么就要自己努力去实现它。

以上学习资料均免费放送,最后祝愿各位身体健康,顺利拿到心仪的offer!

由于文章的篇幅有限,所以这次的蚂蚁金服和京东面试题答案整理在了PDF文档里

资料获取方式:点赞+评论我的文章,关注我,然后戳这里即可免费领取

[外链图片转存中…(img-zDuECi0H-1621054619033)]

[外链图片转存中…(img-uvpzEumU-1621054619034)]

小码农也有大梦想!javaweb编程技术微课版答案相关推荐

  1. 小码农也有大梦想,技术详细介绍

    前言 本人是底层 211 本科,刚毕业,⽆科研经历,但是有些项⽬经历. 在国内监控行业某头部企业做过一段时间的实习. 想着投下字节,可以积累⼀下⾯试经验和为金九银十面招做准备.投了简历之后,过了一段时 ...

  2. 小码农也有大梦想!最小公倍数java算法

    学习内容大致内容: 1.架构师筑基(Linux基础与进阶+Netty框架+Mysql+并发编程+JVM性能调优+Tomcat) 2.开源框架(主要涉及SSM框架) 3.高性能架构(Mysql高性能存储 ...

  3. 小码农也有大梦想!人机猜拳java项目代码

    选择 在现在这个浮躁而又拜金的社会,我相信很多人做技术并非出于热爱,只是被互联网的高薪吸引,毕竟技术岗位非常枯燥,不仅要面对奇奇怪怪的需求,还要不停的充实自己避免被淘汰.所以想要吃好技术这碗饭并不容易 ...

  4. 小码农也有大梦想!看我如何一步一步攻克面试官,2021最新版!

    写在前面 很多小伙伴留言说让我写一些工作过程中的真实案例,写些啥呢?想来想去,写一篇我在以前公司从零开始到用户超千万的数据库架构升级演变的过程吧. 本文记录了我之前初到一家创业公司,从零开始到用户超千 ...

  5. 小码农也有大梦想!java编译环境是什么意思

    前言 很多程序员都会担心35岁的职业危机,而数据也显示,40岁以上的程序员几乎不存在,大都转了管理岗,余下的只能被迫离职或者转行.然而,太久待在舒适区,可能连小公司的面试,都很难通过了. 程序员是最需 ...

  6. 小码农也有大梦想!Java程序培训哪里好

    蚂蚁金服一面(技术面) JVM 内存分哪几个区,每个区的作用是什么?JVM有哪些回收算法,对应的收集器有哪些? GC 的两种判定方法 ?CMS 收集器与 G1 收集器的特点. hashmap源码问题 ...

  7. Android文字基线Baseline算法的使用讲解,小码农也有大梦想

    Baseline是文字绘制时所参照的基准线,只有先确定了Baseline的位置,我们才能准确的将文字绘制在我们想要的位置上.Baseline的概念在我们使用TextView等系统控件直接设置文字内容时 ...

  8. javaweb编程技术第三版教材_Java Web编程技术(第3版)-微课版

    目录 第1章Java Web技术概述 1.1Internet与万维网 1.1.1主机和IP地址 1.1.2域名和DNS 1.1.3万维网 1.1.4服务器和浏览器 1.1.5HTTP与URL 目录 第 ...

  9. 别再说你不会!javaweb编程技术第三版电子版

    常见resdis面试真题40道(含解析) 什么是 Redis? Redis 的数据类型? 使用 Redis 有哪些好处? Redis 相比 Memcached 有哪些优势? Memcache 与 Re ...

最新文章

  1. css中“[]”、“”“~”、“,”、“+”和“”详解
  2. Shell脚本之反引号【``】和 $()
  3. yytextview多种格式_Android 一个TextView字体设置多种不同颜色
  4. 今晚直播 | 旷视研究院王毅:用于条件图像生成的注意力归一化
  5. 健康证(公共卫生类)
  6. 【Java】使用For和递归解决不死神兔问题,求第20个月兔子的对数
  7. 计算机国家实验教学示范中心,教育部、财政部关于批准2007年国家级实验教学示范中心建设单位的通知...
  8. 三星Galaxy Note20系列再遭减配:100倍变焦也没了
  9. jQuery 图片滚动 Carousel Lite 使用说明
  10. 【渝粤教育】国家开放大学2018年秋季 0053-21T移动通信技术与移动通信设备 参考试题
  11. 线性代数之——正交矩阵和 Gram-Schmidt 正交化
  12. 夏日葵电商:从5大方面谈微信商城怎样提高用户体验度
  13. 一步一步学Silverlight 2系列(15):数据与通信之ASMX
  14. 怎样通过微PE工具箱制作启动盘?
  15. 计算机毕业设计ssm电影院售票系统java项目mysql数据库
  16. apache ii评分怎么评_APACHE-II评分表.doc
  17. python自定义函数求方差_计算高斯函数的标准差
  18. 深度学习学习率对模型训练的影响
  19. RE:从零开始的汇编语言_挑好书
  20. dellemc服务器中文语言设置,美版windows10系统设置中文语言的方法

热门文章

  1. taro 请务必在小程序页面中完善页面基础信息_小程序自定义导航栏(完美适配所有手机)...
  2. 国家/行业标准查询及下载全流程
  3. [C] Indian Hill C Style(印第安山风格指南)
  4. Java开发学习的四个阶段
  5. Windows CE嵌入式系统程序开发
  6. 如何宣传推广自己的博客啊?
  7. 亿联话机修改SIP端口及开启stun
  8. UGUI内核大探究(十三)Dropdown
  9. 实验吧-因缺思厅的绕过writeup
  10. 蚂蚁客服介绍-微服网络