首页 文章 精选 留言 我的

精选列表

搜索[分布式锁],共10000篇文章
优秀的个人博客,低调大师

Apollo 2.1.0 发布,分布式配置管理中心

Apollo 2.1.0 已发布,包含了诸如 Spring Boot 3.0 支持、管理员工具页面增强、配置项的类型支持、支持数据库作为注册中心等重大更新。 01 Highlights Spring Boot 3.0支持 Apollo Java 客户端已支持 Spring Boot 3.0 版本。 管理员工具页面增强 用户管理页面增加了列表视图: 系统配置页面增加了PortalDB 和 ConfigDB 所有配置项的列表视图: 开放平台权限管理页面增加了第三方应用列表视图: 配置项的类型支持 用户现在可以修改配置项的类型,Apollo 将根据类型进行基本类型检查,现在可用的类型有 String(默认)、Number、Boolean 和 JSON。 非 Properties 的 Namespace 比较功能 支持非 Properties 的 Namespace 比较不同集群/环境间的配置。 支持数据库作为注册中心 Apollo 现在支持使用数据库作为服务注册中心,无需依赖第三方服务注册中心,如 Eureka、Consul、ZooKeeper 等。 不兼容更新 Flyway 数据库迁移工具从新版本开始不再支持。 02 What's Changed 功能增强 添加配置以调整属性源覆盖行为 添加 Config Service Load Balancer Client的 spi 添加一个新的 API 以使用分页加载项目 apollo-client 支持 Spring Boot 3.0 apollo-client-config-data 支持 Spring Boot 3.0 添加 apollo-plugin-log4j2 模块以支持 log4j2.xml 集成 允许用户为 ApolloConfigChangeListener 配置以逗号分隔的命名空间 为 MessageProducerManager 和 Injector SPI 添加 Ordered 接口 优化 Spring-Security 防火墙拒绝请求响应 400 的问题 允许用户一次关联多个公共命名空间 优化开放平台授权管理 UI 体验 比较配置项时添加搜索键 添加一个新的 API 以使用分页加载项目 阿波罗门户用户友好的用户管理页面 将 Spring Session 序列化方式切换为 JSON以兼容 Spring Security 版本更新 对命名空间进行多线程排序 允许用户删除 AppNamespace 为 ApolloPortal 开发人员添加配置处理器 添加潜在的 JSON 值检查功能 支持非 Properties Namespace 比较 为自定义 OIDCuserDisplayName 添加一个选项 为配置项添加基本类型支持 一个用户友好的 Apollo 门户配置管理页面 支持使用数据库作为注册中心 用户可以在不重新编译项目的情况下更改 spring.profiles.active 的值 为 Eureka 开启登录认证 问题修复 修复 openapi item with url illegalKey 400 错误 修复 ApolloBootstrapPropertySources 优先级问题 修复 beanName2SpringValueDefinitions 缓存问题 修复当 openapi key 的参数包含 “a[0]” 时出现 400 错误请求 升级 mysql-connector-java 版本,修复可能的事务回滚失败问题 修复 'openjdk:8-jre-alpine' 可能导致错误的 cpu 核心数 修复覆盖 JSON 类型配置为空的问题 修复 deletedAt 时间戳问题 修复 openapi item with url illegalKey 400 错误 修复 @Transactional 无效案例 修复灰度发布/回滚命名空间时出现的异常 修复 LDAP 集成的 JSON序列化问题 修复 Apollo 检查 YAML 格式接口 Response Code = 500 修复 create namespace with single dot 500 错误 修复(安全):将 fastjson 升级到 1.2.83 修复获取包含删除项命名空间信息的 openapi 接口 运行测试时禁用 SpringCloud Discovery 以加快测试过程并减少错误日志 修复灰度版本的配置长度限制无法与其主版本同步的问题 修复删除最后一项配置后出现空白项的问题 更多内容可以点击左下角阅读原文或直接访问以下链接: https://github.com/apolloconfig/apollo/releases/tag/v2.1.0 https://github.com/apolloconfig/apollo-java/releases/tag/v2.1.0 升级后如有问题,可以反馈至 https://github.com/apolloconfig/apollo/issues。 欢迎加入我们 Apollo 社区欢迎大家以任何形式为社区做出贡献,包括但不限于文档改进、提交 issue/bug、贡献代码、Review PR、技术讨论等,一起促进开源生态的发展。 Apollo 官方网站: https://www.apolloconfig.com/ Apollo 仓库地址: https://github.com/apolloconfig/apollo Apollo 公共邮箱: apollo-config@googlegroups.com 关于 Apollo Apollo 项目于 2016 年在携程框架研发部诞生,初衷是为了解决公司内部配置管理尤其是中间件公共配置的管理难题,秉持着开源开放的精神,项目从第一行代码开始就在 GitHub 上开源,可以说是一个完全开放的项目。经过多年的发展,Apollo 以其功能丰富、简单易用等特性,得到了社区开发者的欢迎,也已在数百家公司中得到广泛使用。

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

分布式数据库--ZMP数据迁移平台

在云计算、大数据和物联网时代,数字化转型悄然在各行各业中进行。然而数据作为最基础的要素,如何进行多源异构的海量数据交换?如何保证数据的时效性和准确性?如何让海量异构数据实现云上、云下的协同?是我们长此以往关注的焦点。而ZMP数据迁移平台正致力于云间数据交换场景,支持不同数据结构,可帮助政企客户快速搭建高性能、高安全、高可靠、高稳定的数据交换平台。 1.功能 ZMP数据迁移平台不仅有基础的系统、用户和主题管理,也有可视化运维的服务器管理及消息监控等,更主要的是集成了消息服务、数据转换同步等中间件,同时加入了迁移评估和应用的智能改造。 服务器管理:提供服务器、消息服务、同步组件的安装、启停、配置和监控等功能。 主题管理:提供消息服务主题的创建、删除、编辑和监控,在数据交换中,不需要用户创建和删除主题,由数据交换任务统一管理。 数据迁移评估:提供源库数据库(Oracle9i,Oracle11g,Oracle12c,SQLserver)的数据采集,画像及目的端数据库为云溪数据库或MySQL时的兼容性评估。 数据采集:针对多个Oracle版本和SQLServer,构建了数据采集工具。 源库画像:根据采集的数据,自动生成智能五边图(规模,会话,风险,负载,复杂度),数据库的概要信息与详细信息——包括数据库性能及运行时的性能,容量,Oracle特性,对象详情、全景搜索等。用户可以直观地把握以上信息,并在详情页查看具体的信息。同时,在不同对象的依赖关系里,还可以实现跳转,帮助理解数据库原有结构。 兼容评估:将源库所有对象与SQL语句进行解析,判断其与目标库(之间的兼容情况,并输出其统计结果。在评估详情中看到每一个对象的兼容情况及迁移风险等情况。 数据交换:提供作业、任务、数据源和同步表的创建、删除、编辑、监控和统计报表功能。 支持结构化数据交换:云溪数据库、Oracle、SQLserver、DB2、Sybase、MySQL、PostgreSQL、Greenplum、Redis、Cache、Kudu等。 支持非结构化数据交换:Linux/Windows文件、FTP、SFTP、OSS、HDFS各种样式,各种大小的数据交换。 支持半结构化数据交换:JSON、CSV等半结构化数据与数据库交换。 支持多协议数据采集:MQTT、COAP、MODBUS、XPH、DICOM、HTTP、RTSP、RTMP等。 智能改造:加载源代码(工程)文件夹,对其中文件进行嗅探,寻找其中的SQL语句,并进行统计、分析、改造,并对改造情况进行统计分析,并提供手动查看与改造等相关功能。 用户管理:提供用户的创建、删除、编辑、权限分配和审计等功能。 系统配置:提供控制台日志、系统告警等功能。 版本管理:提供同步组件安装包更新、同步组件升级等功能。 2. 优势 ZMP数据迁移平台在支持多种数据源的基础上,提供可视化拖拽方式进行流程编排。既大大降低了对源端的影响,又提高了同步效率。同时支持超大文件和各种网络数据传输。 同步效率高:每秒10万级记录以上同步量。 源端影响小:支持Oracle、SQLserver、MySQL、MariaBD和达梦日志增量同步,不需要依赖触发器、CDC、时间戳。 多字段时间戳:支持多时间戳、增量字段、支持时间戳及增量字段向前偏移。 DDL变更捕获:支持数据库级别和表字段级别 数据管理监控:采用可视化拖拽方式进行流程编排,可视化管理监控数据流向、数据统计、数据报表及相关警告。 支持结构化数据交换:云溪数据库、Oracle、SQLserver、DB2、Sybase、MySQL、PostgreSQL、Greenplum、Redis、Cache、Kudu等。 超大文件和网络数据传输:支持复杂环境下TB级别文件,支持中继路由、文件网闸、有限带宽等各种网络数据传输,支持断点续传。 国产化环境及中间件:支持mips、x86、arm等CPU架构和金蝶、中创等。 3. 架构 功能架构: 技术架构: 数据库交换架构: 文件交换架构: 4. 应用 各种类型数据、大数据平台和行业应用,通过ZMP数据迁移平台实现高效的数据交换。医疗通信等行业产生的结构化、非结构化、文件等数据,通过ZMP平台抽取、转换、加密传输和入库,最大化实现数据的价值。同时云上云下数据协同。 跨网络、跨防火墙、跨中继路由、跨网闸等方式部署平台可使用多种不同的应用场景。异构采集对数据源影响小,实现数据高效采集,可靠传输,支持海量消息存储;数据交换支持单节点每秒百万级消息处理,集群下支持每秒亿级消息吞吐量,消息容量可达PB级。

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

.NET 分布式事件总线 Jaina v1.0.0 发布

Jaina .NET 事件总线,简化项目、类库、线程、服务等之间的通信,代码更少,质量更好。‎ 安装 Package Manager Install-Package Jaina .NET CLI dotnet add package Jaina 快速入门 我们在主页上有不少例子,这是让您入门的第一个: 定义事件订阅者ToDoEventSubscriber: // 实现 IEventSubscriber 接口 public class ToDoEventSubscriber : IEventSubscriber { private readonly ILogger<ToDoEventSubscriber> _logger; public ToDoEventSubscriber(ILogger<ToDoEventSubscriber> logger) { _logger = logger; } // 标记 [EventSubscribe(事件 Id)] 特性 [EventSubscribe("ToDo:Create")] public async Task CreateToDo(EventHandlerExecutingContext context) { var todo = context.Source; _logger.LogInformation("创建一个 ToDo:{Name}", todo.Payload); await Task.CompletedTask; } } 创建控制器ToDoController,依赖注入IEventPublisher服务: [Route("api/[controller]/[action]")] [ApiController] public class ToDoController : ControllerBase { // 依赖注入事件发布者 IEventPublisher private readonly IEventPublisher _eventPublisher; public ToDoController(IEventPublisher eventPublisher) { _eventPublisher = eventPublisher; } // 发布 ToDo:Create 消息 [HttpPost] public async Task CreateDoTo(string name) { await _eventPublisher.PublishAsync(new ChannelEventSource("ToDo:Create", name)); } } 在Startup.cs注册EventBus服务: public class Startup { public void ConfigureServices(IServiceCollection services) { // 注册 EventBus 服务 services.AddEventBus(buidler => { // 注册 ToDo 事件订阅者 buidler.AddSubscriber<ToDoEventSubscriber>(); }); // .... } public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { // .... } } 运行项目: info: Jaina.Samples.ToDoEventSubscriber[0] 创建一个 ToDo:Jaina 高级教程 1. 自定义事件源IEventSource Jaina 使用IEventSource作为消息载体,任何实现该接口的类都可以充当消息载体。 如需自定义,只需实现IEventSource接口即可: public class ToDoEventSource : IEventSource { // 自定义属性 public string ToDoName { get; } /// <summary> /// 事件 Id /// </summary> public string EventId { get; } /// <summary> /// 事件承载(携带)数据 /// </summary> public object Payload { get; } /// <summary> /// 取消任务 Token /// </summary> /// <remarks>用于取消本次消息处理</remarks> public CancellationToken CancellationToken { get; } /// <summary> /// 事件创建时间 /// </summary> public DateTime CreatedTime { get; } = DateTime.UtcNow; } 使用: await _eventPublisher.PublishAsync(new ToDoEventSource { EventId = "ToDo:Create", ToDoName = "我的 ToDo Name" }); 2. 自定义事件源存储器IEventSourceStorer Jaina 默认采用Channel作为事件源IEventSource存储器,开发者可以使用任何消息队列组件进行替换,如Kafka、RabbitMQ、ActiveMQ等,也可以使用部分数据库Redis、SQL Server、MySql实现。 如需自定义,只需实现IEventSourceStorer接口即可: public class RedisEventSourceStorer : IEventSourceStorer { private readonly IRedisClient _redisClient; public RedisEventSourceStorer(IRedisClient redisClient) { _redisClient = redisClient; } // 往 Redis 中写入一条 public async ValueTask WriteAsync(IEventSource eventSource, CancellationToken cancellationToken) { await _redisClient.WriteAsync(...., cancellationToken); } // 从 Redis 中读取一条 public async ValueTask<IEventSource> ReadAsync(CancellationToken cancellationToken) { return await _redisClient.ReadAsync(...., cancellationToken); } } 最后,在注册EventBus服务中替换默认IEventSourceStorer: services.AddEventBus(buidler => { // 替换事件源存储器 buidler.ReplaceStorer<RedisEventSourceStorer>(); }); 3. 自定义事件发布者IEventPublisher Jaina 默认内置基于Channel的事件发布者ChannelEventPublisher。 如需自定义,只需实现IEventPublisher接口即可: public class ToDoEventPublisher : IEventPublisher { private readonly IEventSourceStorer _eventSourceStorer; public ChannelEventPublisher(IEventSourceStorer eventSourceStorer) { _eventSourceStorer = eventSourceStorer; } public async Task PublishAsync(IEventSource eventSource) { await _eventSourceStorer.WriteAsync(eventSource, eventSource.CancellationToken); } } 最后,在注册EventBus服务中替换默认IEventPublisher: services.AddEventBus(buidler => { // 替换事件源存储器 buidler.ReplacePublisher<ToDoEventPublisher>(); }); 4. 添加事件执行监视器IEventHandlerMonitor Jaina 提供了IEventHandlerMonitor监视器接口,实现该接口可以监视所有订阅事件,包括执行之前、执行之后,执行异常,共享上下文数据。 如添加ToDoEventHandlerMonitor: public class ToDoEventHandlerMonitor : IEventHandlerMonitor { private readonly ILogger<ToDoEventHandlerMonitor> _logger; public ToDoEventHandlerMonitor(ILogger<ToDoEventHandlerMonitor> logger) { _logger = logger; } public Task OnExecutingAsync(EventHandlerExecutingContext context) { _logger.LogInformation("执行之前:{EventId}", context.Source.EventId); return Task.CompletedTask; } public Task OnExecutedAsync(EventHandlerExecutedContext context) { _logger.LogInformation("执行之后:{EventId}", context.Source.EventId); if (context.Exception != null) { _logger.LogError(context.Exception, "执行出错啦:{EventId}", context.Source.EventId); } return Task.CompletedTask; } } 最后,在注册EventBus服务中注册ToDoEventHandlerMonitor: services.AddEventBus(buidler => { // 主键事件执行监视器 buidler.AddMonitor<ToDoEventHandlerMonitor>(); }); 5. 自定义事件处理程序执行器IEventHandlerExecutor Jaina 提供了IEventHandlerExecutor执行器接口,可以让开发者自定义事件处理函数执行策略,如超时控制,失败重试、熔断等等。 如添加RetryEventHandlerExecutor: public class RetryEventHandlerExecutor : IEventHandlerExecutor { public async Task ExecuteAsync(EventHandlerExecutingContext context, Func<EventHandlerExecutingContext, Task> handler) { // 如果执行失败,每隔 1s 重试,最多三次 await Retry(async () => { await handler(context); }, 3, 1000); } } 最后,在注册EventBus服务中注册RetryEventHandlerExecutor: services.AddEventBus(buidler => { // 主键事件执行监视器 buidler.AddExecutor<RetryEventHandlerExecutor>(); }); 文档 您可以在主页找到 Jaina 文档。 贡献 该存储库的主要目的是继续发展 Jaina 核心,使其更快、更易于使用。Jaina 的开发在Gitee上公开进行,我们感谢社区贡献错误修复和改进。 许可证 Jaina 采用MulanPSL-2.0开源许可证。 Copyright (c) 2020-2021 百小僧, Baiqian Co.,Ltd. Jaina is licensed under Mulan PSL v2. You can use this software according to the terms andconditions of the Mulan PSL v2. You may obtain a copy of Mulan PSL v2 at: https://gitee.com/dotnetchina/Jaina/blob/master/LICENSE THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUTWARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED,INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. See the Mulan PSL v2 for more details.

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

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

Rocky Linux

Rocky Linux

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

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册