首页 文章 精选 留言 我的

精选列表

搜索[图数据库],共10000篇文章
优秀的个人博客,低调大师

一图看完2021年网络界收购年度报告

纵观整个2021年,思科不愧为收购大牛,在整个收购盘点中一骑绝尘,宣布并完成了七项交易,光6月就出现3次,着眼于路由光网络、Webex 集成、Kubernetes安全以及云原生应用等多个方向。Juniper致力于完善其数据中心产品,继2019 年 4 月和 2020 年 10 月收购 Mist Systems 和 128 Technology 之后,Juniper于 2020 年 12 月宣布计划收购Apstra,并于 2021 年完成交易。整个 2021 年,SD-WAN 领域持续进行一系列收购,供应商聚焦于安全功能,SASE热度持续攀升。 以上就是小编整理的2021网络界的收购年度报告,欢迎大家补充,也期待明年这些大厂的后续动作啦! 鸿蒙官方战略合作共建――HarmonyOS技术社区 【责任编辑:赵宁宁 TEL:(010)68476606】

优秀的个人博客,低调大师

8 张图 | 剖析 Eureka 的首次同步注册表

初次见面,能否把你的「注册表」都给我? 大家好,我是悟空。 Eureka 注册中心系列文章汇总: 领导让我研究 Eureka 源码 | 启动过程 领导“叕”让我研究 Eureka 源码:注册过程 值得收藏的 Eureka 控制台详解 原来一个 Map 就能搞定注册表了 一、前言 注册表对于注册中心尤为重要,所有的功能都是围绕这个注册表展开。比如服务 A 要想访问服务 B,就得知道服务 B 的 IP 地址和端口号吧。如下图所示,传统的方式就是服务 A 知道了服务 B 的地址后,发送 HTTP 请求到对应的 API 地址上。 那服务 A 和 服务 B 的信息其实就是放在注册中心的注册表里面的,由注册中心统一管理所有服务的注册、下线。服务 A 和 服务 B 想要获取注册信息,统一访问注册中心,拿到注册表,就知道其他服务的 IP 地址 和端口号了。 上一讲,我们讲到一个 Eureka Client 成功注册到 Eureka Server 后,Eureka Server 就会把注册表信息存到一个 ConcurrentHashMap 中。 那 Client 怎么获取其他客户注册信息呢? 二、首次获取注册信息 首先我们想一下,服务 B 发送注册请求到注册中心了,那服务 A 就得获取注册表了吧,服务 A 本地一开始肯定是没有注册表信息的,那肯定就得到注册中心把注册表全部拉取一遍了。(这里服务 A 也称作 Eureka 客户端) 服务 A 对于注册中心来说,就是初次见面,服务 A 想把所有注册信息都在自己本地存一份,方便后续的 API 调用。 接下来我们从源码角度分析下客户端怎么获取全量注册表的吧。 客户端发送获取的请求 Client 初始化的时候,就会从 Eureka 注册中心获取全量的注册表: 首次获取注册信息就是用在 DiscoveryClient 初始化的时候获取的。我们可以从源码中找到如下判断: if (clientConfig.shouldFetchRegistry() && !fetchRegistry(false)) { fetchRegistryFromBackup(); } 这段代码的意思如图所示: 就是先根据是否配置了 shouldFetchRegistry,如果配置了,则会调用 fetchRegistry 方法获取注册表。 因为是新的 client,所以肯定是没有注册信息的,所以本地的变量 applications = null。然后根据几个条件来判断是否需要全量获取注册表,满足其中一个条件就会全量获取: 条件一:是否强制全量获取。传的 false,不需要全量。 条件二:注册表信息是否为空。application == null,为空,需要全量获取。 条件三:获取已注册的 client 的个数是否等于 0。是的,需要全量获取。 因为满足 applications=null,所以需要全量获取。 获取全量注册信息的方法: getAndStoreFullRegistry() 在这个里面就会发送下面这个 HTTP 请求调用 jersey 的 restful 接口: getApplications() 然后 Eureka Server 处理这个 http 的请求的类是在这里:ApplicationsResource 类的 getContainers 方法。这个方法里面就会去拿 Server 那边注册表了。 三、Server 端的注册表缓存 Server 端会把注册表放到缓存里面,读取注册表其实是从缓存里面读取出来的。 分为两级缓存,只读缓存 readOnlyCacheMap 和读写缓存 readOnlyCacheMap。 如下图所示: 缓存的读取逻辑如下: Jersey Servlet 处理 HTTP 请求。 首先默认会先从只读缓存里面找。 没有的话,再从读写缓存里面找。 找到了的话就更新只读缓存,并返回找到的缓存。 还找不到的话,就返回空。 留几个问题,放到缓存架构那篇再讲: (1)两级缓存数据怎么来的? (2)缓存数据如何更新的? (3)缓存如何过期? 然后,Eureka Client 获取注册表信息后,就会存到本地 localRegionApps 变量中。这样 Client 就会有一份 Server 的注册表信息了。 localRegionApps.set(this.filterAndShuffle(apps)); 四、总结 注册表无论是对于 Client 还是 Server 来说,都非常重要: 对于 Server 端来说,为了更好的提供查询注册表的服务,使用了多级缓存来缓存注册表信息。 对于 Client 端来说,首次获取注册表时就会全量抓取注册表,存在自己本地。 后续:第二次见面,怎么获取注册表呢? 作者简介:悟空,8年一线互联网开发和架构经验,用故事讲解分布式、架构设计、Java 核心技术。《JVM性能优化实战》专栏作者,开源了《Spring Cloud 实战 PassJava》项目,公众号:悟空聊架构。本文已收录至 www.passjava.cn

优秀的个人博客,低调大师

22 图 |硬核解析 M1 上如何使用 Docker

这是悟空的第95篇原创文章 前言 出于开源项目的需要,我准备把之前在 Windows 下运行的开源项目移植到 Mac 上跑得试下,但是之前 Mac M1 芯片并不能很好地支持 Docker,这不,发现 Docker 也正式支持 Mac 了,M1 看了 Docker 的芳容,竟悄悄爱上了 Docker。 本文主要内容如下: 一、官宣 1.1 官宣版 之前 Docker 只支持在 Intel 芯片的 X86 架构上运行,Docker 已经正式支持苹果 M1 芯片了,而 M1 芯片是 ARM 架构的,所以说 Docker 真的是太强大了,短短几个月就适配了苹果最新的系统! 这不就是官宣 Docker 帅哥要追 M1 妹纸么? 悟空到官网上看了下,2021-04-15 发布的正式版:Docker Desktop 3.3.1,而且可以直接下载。 官网地址:https://docs.docker.com/docker-for-mac/apple-silicon/ 这个 Desktop 包含很多功能: Docker Engine Docker CLI client Docker Compose Notary Kubernetes Credential Helper 另外在 M1 上运行 Docker 还有些条件需要满足。 1.2 要求 因为 M1 比较前卫,所以需要安装 Rosetta 软件来进行兼容。 必须安装 Rosetta ,因为某些二进制文件仍是Darwin / AMD64。要从命令行手动安装Rosetta 2,请运行以下命令: softwareupdate--install-rosetta Docker 官方有望在将来的版本中修复此问题。 1.3 磨合 Docker 和 M1 还有许多地方需要磨合: 并不是所有镜像都可以用于 M1 的 ARM64 架构,比如 mysql 镜像就不适合。但可以通过使用 mariadb 镜像来解决此问题。 我试了下,确实没有合适的 mysql 镜像。 由于QEMU有时无法运行容器,因此在 Apple Silicon计算机上运行基于Intel的容器可能会导致崩溃。我们建议您在Apple Silicon计算机上运行 ARM64 容器。与基于Intel的容器相比,这些容器还更快并且使用的内存更少。 ping从容器内部到 Internet 的连接无法正常工作。要测试网络,我们建议使用 curl或 wget。 当TCP流半关闭时,用户有时可能会遇到数据丢失的情况。 二、手拉手 2.1 左手拉右手 之前在 Linux 环境安装 Docker 是通过命令行安装的,但是在 Mac 上有客户端可以使用,确实方便很多。安装 Mac 版的 Docker非常方便,下载完成后的文件名叫做 Docker.dmg。双击文件后,弹出如下界面,把 Docker.app 图标拖到右边 Appliactions 就可以了,就像左手拉右手。 Docker 帅哥成功牵手 M1。 安装完成后,在应用程序中找到 Docker,双击打开就可以了。 接着就可以看到 Docker 在菜单栏中有显示。 2.2 启动容器 打开的界面,会提示没有容器正在运行,客户端提示执行以下命令启动一个新的容器。 dockerrun-d-p80:80docker/getting-started 我们将命令拷贝到控制台后运行,如下图所示: 然后我们来check 下容器是否创建和启动成功。通过以下命令来查看 docker 容器的运行状态。 dockerps 我们同样可以通过 Docker 客户端来查看容器状态:容器正在运行中,对应的端口号是 80。如下图所示: 另外我们也可以看下有哪些镜像已经下载好了,如下图所示,目前有一个镜像:docker/getting-started。 2.3 Intel & Apple 我们打开活动监视器,可以看到打开的 docker 进程既有 Apple 架构的,也有 Intel 架构的,比如桌面 UI 用的是 Intel 架构的,但 Docker 核心应用程序用的 Apple 架构,说明虽然有部分用的 Intel 架构,但核心还是 Apple 架构,不影响使用。 再来看下内存使用情况,12 个进程,总共占用 430 M 内存,说明占用的内存并不高,性能还是可以的。 三、暖男 Docker 客户端还有一系列人性化的配置,优质暖男一枚。来看下有什么配置吧。 3.1 通用偏好设置 Docker 客户端,有很多人性化的通用设置。如下图所示: 自动检查更新:默认情况下,Docker Desktop配置为自动检查较新版本。如果您作为组织的一员安装了Docker Desktop,则可能无法自己更新 Docker Desktop。在这种情况下,请将您现有的组织升级为团队计划,然后清除此复选框以禁用自动检查更新。 登录时启动 Docker Desktop:打开会话时自动启动Docker Desktop。 在 Time Machine 备份中包括 VM:选择此选项以备份 Docker Desktop 虚拟机。默认情况下未勾选此选项。 使用 gRPC FUSE 进行文件共享:清除此复选框可改用旧版 osxfs 文件共享。 发送使用情况统计信息:Docker Desktop发送诊断、崩溃报告和使用情况数据。此信息可帮助Docker 改善应用程序并进行故障排除。 显示每周提示:显示有关使用Docker的有用建议。 启动时打开 Docker Desktop 仪表板:启动 Docker Desktop 时自动打开仪表板。 3.2 资源高级配置 还有些关于资源的高级配置也非常强大,来瞧一瞧吧。 CPU:默认情况下,Docker Desktop设置为使用主机上可用处理器数量的一半。要提高处理能力,请将其设置为更高的数字。 内存:默认情况下,Docker Desktop设置为使用 2GB运行时内存,该内存是从Mac上的总可用内存分配的。要增加RAM,请将其设置为更大的数字,如果要减少它,请降低数字。 交换:根据需要配置交换文件的大小,默认值为1 GB。 磁盘映像大小:指定 磁盘映像的大小。 磁盘映像位置:指定Linux卷的容器和映像的存储位置。 3.3 K8S Docker Desktop 竟然直接支持 kubernets(K8S) ,太酷了吧! Docker Desktop 包含一个可在 Mac 上运行的独立 Kubernetes 服务器,因此可以测试在Kubernetes上部署 Docker 的工作负载。要启用Kubernetes支持并安装作为Docker容器运行的Kubernetes独立实例,请选择Enable Kubernetes。 还有很多非常有用的功能,这里就不一一介绍了,感兴趣的可以到官网上查看哦~ Docker 对于 M1 来说,绝对是优质暖男一枚!实锤了!🔨 四、约会 说了 Docker 的那么多优点,M1 终于愿意和 Docker 谈恋爱了,他们第一个约会活动就是实战 Redis。 4.1 下载 Redis 镜像 先让 Docker 下载个 Redis 镜像试下: sudodockerpullredis 我们可以通过 Docker 客户端来看下镜像是否下载成功,如下图所示,确实下载成功。另外也可以通过命令 docker ps 查看。 4.2 启动 Redis 启动 redis dockerrun-d-p6379:6379redis 4.3 连接redis dockerexec-it<容器id>redis-cli 需要通过 docker ps 找到 redis 容器 id,我的机器上运行的 redis 容器 id 是 17c...,命令中可以简写,只要能识别这个容器就可以。 连接成功后,会进入到 redis 命令行。 4.4 测试 Redis 设置a=100,返回OK seta100 获取a的值,返回"100" geta 说明 docker 在 M1 上 完美运行 Redis。 另外我的开源项目中要用 Elasticsearch 和 Kibana,但是都没有适配的镜像,这就很难受了啊! 看来 Docker 和 M1 还有很长的路要走,谈恋爱磕磕碰碰很正常,需要磨合的还有很多,但悟空相信他们最终一定会走到一起,并过上幸福的日子~ 对于 M1 和 Docker 的爱情你们怎么看?评论区见~ 参考资料: www.passjava.cn https://github.com/Jackson0714/PassJava-Platform https://docs.docker.com/docker-for-mac/apple-silicon - END - 写了两本 PDF, 回复 分布式 或 PDF 下 载。 我的 JVM 专栏已上架,回复 JVM 领取 我是悟空,努力变强,变身超级赛亚人! 本文分享自微信公众号 - 悟空聊架构(PassJava666)。 如有侵权,请联系 support@oschina.cn 删除。 本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册