又到一年金三银四!深入理解java虚拟机第三版百度云

程序员环西 程序员环西     2022-12-10     275

关键词:

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

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

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

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

最后

我想问下大家当初选择做程序员的初衷是什么?有思考过这个问题吗?高薪?热爱?

既然入了这行就应该知道,这个行业是靠本事吃饭的,你想要拿高薪没有问题,请好好磨练自己的技术,不要抱怨。有的人通过培训可以让自己成长,有些人可以通过自律强大的自学能力成长,如果你两者都不占,还怎么拿高薪?

架构师是很多程序员的职业目标,一个好的架构师是不愁所谓的35岁高龄门槛的,到了那个时候,照样大把的企业挖他。为什么很多人想进阿里巴巴,无非不是福利待遇好以及优质的人脉资源,这对个人职业发展是有非常大帮助的。

如果你也想成为一名好的架构师,那或许这份**Java核心架构笔记**你需要阅读阅读,希望能够对你的职业发展有所帮助。

中高级开发必知必会:

//gitee.com/vip204888/java-p7)**你需要阅读阅读,希望能够对你的职业发展有所帮助。

中高级开发必知必会:

《深入理解java虚拟机-jvm高级特性与最佳实践(第三版)》阅读笔记

《深入理解Java虚拟机》阅读笔记本repository为《深入理解Java虚拟机-Jvm高级特性与最佳实践(第三版)》阅读笔记,因为第一章主要讲的是Java的发展历史,这里就不做笔记,直接从第2章的"Java内存区域与内... 查看详情

深入理解java虚拟机第二部分.内存自动管理机制.2.hotspot虚拟机对象探秘

...ot虚拟机对象探秘 对象的创建过程1、加载类虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,... 查看详情

深入理解java虚拟机(第三版)-14.线程安全与锁优化

14.线程安全与锁优化1.什么是线程安全?当多个线程同时访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替进行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可... 查看详情

听说今年金三银四变成金一银二了。。。

春节回家,看到朋友晒的年终奖,我羡慕不已。他入职腾讯一年半,拿了3个月工资作为年终奖。据他所说,这还不算什么,网易《哈利波特·魔法觉醒》项目组,所有员工奖励888888元……虽然说并不是每个... 查看详情

深入理解java虚拟机第二版类文件结构

一.class类文件的结构Class文件是一组以8位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑地排列在Class文件之中,中间没有添加任何分隔符,这使得整个Class文件中存储的内容几乎全部是程序运行的必要数据,没有... 查看详情

《深入理解java虚拟机》第三版第七章要点总结(代码片段)

本文仅作为复习清单使用类生命周期加载验证准备解析初始化使用卸载常量优化常量传播常量折叠类的加载通过全限定名获取二进制字节流将静态存储结构转化为方法区的运行时数据结构生成Class对象验证过程(可关闭)文件格式... 查看详情

深入理解java虚拟机第二部分.内存自动管理机制.5.调优实战

高性能硬件上的程序部署策略在高性能硬件上部署程序,目前主要有两种方式:  通过64位JDK来使用大内存。    -- 缺点:GC停顿时间长  使用若干个32位虚拟机建立逻辑集群来利用硬件资源。  --思想:分治... 查看详情

准备2022年金三银四跳槽的注意了,2022年互联网行业各大厂岗位分析,选择合适自己的公司岗位很重要

2020-2021受疫情影响,各个行业都遇寒冬!经济大环境本就萧条,又遇K12行业政策大变,让互联网打工人生活雪上加霜!身边很多90后屡次跳槽,给周边人都带来焦虑!有车贷、房贷的人更是不敢停歇ÿ... 查看详情

java实现代码热更新(代码片段)

...一个简易的代码热更新工具。类加载相关知识可以参考:深入理解JVM虚拟机第三版,深入理解JVM虚拟机(第二版)—国外的,自己动手写JVM类加载器JVM通过Cl 查看详情

《深入理解计算机系统》(第三版)读书疑问

问题:第一章helloworld是怎样工作的?预处理器、编译器、汇编器、链接器是怎样把.c的源程序分别修改为.i、.s.、.o的程序的?第二章反码和补码在作用上有什么区别?第三章直到型循环和当行循环有什么异同?第四章Y86指令集... 查看详情

java实现代码热更新(代码片段)

...一个简易的代码热更新工具。类加载相关知识可以参考:深入理解JVM虚拟机第三版,深入理解JVM虚拟机(第二版)—国外的,自己动手写JVM类加载器JVM通过ClassLoader将.class二进制流读取到内存中, 查看详情

开发三年就是高级开发?android开发如何备战2023年金三银四,挑战年薪50w

到了年底了,很多公司又开始新一轮的招人了,很多人也在为年后的跳槽做准备。如果把各大互联网公司的招聘信息拉出来看的话,基本都要求3年以上工作经验,Title也基本都是Android高级开发。所以很多人就会产... 查看详情

《深入理解计算机系统(第三版)》第二章

一、信息存储1.机器级程序将存储器视为一个非常大的字节数组,称为虚拟存储器,每个字节都有一个唯一的数字来标识,称为地址,所有可能地址的集合称为虚拟地址空间。2.每台计算机都有一个字长,指明指针数据的标称大... 查看详情

《深入理解计算机系统(第三版)》第三章

3.1程序编码1.计算机系统使用了多种不同形式的抽象,对于机器级编程来说,两种抽象尤为重要:指令集体系结构(ISA):定义了处理器状态、指令的格式,以及每条指令对状态的影响机器级程序使用的存储器地址是虚拟地址:提... 查看详情

深入理解java虚拟机第二部分.内存自动管理机制.3.垃圾收集器与内存分配策略

1、学习目的当需要排查各种内存溢出、内存泄漏问题时,当垃圾收集成为系统达到更高并发量的瓶颈时,我们就需要对这些“自动化”的技术实施必要的监控和调节。Java内存运行时区域的各个部分,其中程序计数器、虚... 查看详情

深入理解java虚拟机第二版虚拟机性能监控与故障处理工具(代码片段)

JDK的命令行工具(jps:虚拟机进程状况工具,jstat:虚拟机统计信息监视工具,jinfo:Java配置信息工具,jmap:Java内存映像工具,jhat:虚拟机堆转储快照分析工具,jstack:Java堆栈跟踪工具);可视化工具(JConsole,VisualVM) ... 查看详情

《深入理解计算机系统(第三版)》第一章

1.知识总结(主要对新知识)(1)计算机提供不同层次的抽象表示,来隐藏实际实现的复杂性文件是对I/O设备的抽象表示虚拟存储器是对主存和磁盘I/O设备的抽象表示进程是对处理器、主存和I/O设备的抽象表示(2)程序员必须... 查看详情

《深入理解java虚拟机》第三版第二,三章要点总结(代码片段)

本文仅作为复习清单使用运行时数据区域线程私有:程序计数器,JAVA虚拟机栈,本地方法栈线程共享:堆,方法区,运行时常量池,直接内存内存分配方式指针碰撞空闲列表本地线程分配缓冲堆在某种程度上,也存在线程私有的部分哦对象... 查看详情