架构设计与优化
文章平均质量分 79
helloworddm
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
防止应用多开-WPF
启动第一个实例之后,第二个就不能再次启动。互斥锁实现阻止应用多开。原创 2025-12-30 21:51:46 · 162 阅读 · 0 评论 -
GetDirectoryReference 远程代理创建机制详解
透明的分布式编程模型:调用远程方法就像调用本地方法一样高效的消息传递:自动处理网络通信、序列化和反序列化类型安全:提供编译时类型检查,避免运行时错误性能优化:通过缓存机制避免重复创建代理可靠性:内置重试、超时和故障转移机制让分布式编程变得简单。原创 2025-12-22 21:40:50 · 925 阅读 · 0 评论 -
CalculateGrainDirectoryPartition
方法是 Orleans 分布式系统中 Grain 目录服务的核心组件之一,主要负责确定给定 GrainId 应该由集群中的哪个 Silo 来管理。它实现了一致性哈希算法,将 GrainId 映射到特定的 Silo 地址,从而实现 Grain 目录的分布式管理。方法是 Orleans 分布式系统中实现 Grain 目录分布式管理的核心组件。它通过一致性哈希算法将 GrainId 映射到特定的 Silo,实现了高可用性、负载均衡和系统扩展性。原创 2025-12-18 23:16:15 · 739 阅读 · 0 评论 -
Orleans 成员资格通知机制
fill:#333;存储弱引用到监听器列表触发 MembershipTableUpdates 流异步执行 AddServer/RemoveServerloop。原创 2025-12-17 21:52:40 · 653 阅读 · 0 评论 -
LocalGrainDirectory详解
是Orleans分布式系统的核心组件,它通过分布式哈希表算法实现了高效的Grain定位服务,为整个系统的可扩展性和可靠性提供了基础支撑。是Orleans分布式系统中负责本地Grain目录管理的核心组件,它实现了分布式哈希表(DHT)风格的Grain定位服务。[Silo变为Terminating状态][需要转发到其他Silo][需要转发到其他Silo][缓存未命中或无效]原创 2025-12-16 22:32:18 · 879 阅读 · 0 评论 -
WinUI3 主线程不要执行耗时操作的原因
主线程是UI应用程序的核心,负责协调所有与用户交互相关的操作。执行耗时操作会阻塞主线程的消息循环,导致UI无响应、布局异常,甚至程序崩溃。因此,任何可能耗时的操作都应该在后台线程执行,只有UI更新才应该在主线程上进行。主线程被阻塞时,无法处理新的UI更新请求和用户输入事件,导致界面卡顿甚至完全无响应。在Microsoft UI XAML(WinUI)框架中,存在严格的。当主线程被阻塞,布局无法及时更新,可能导致界面元素位置错误。,它会检查当前线程是否是UI线程,如果不是,直接返回。原创 2025-12-16 10:21:23 · 610 阅读 · 0 评论 -
Orleans Grain Directory 详细解析
Orleans 支持自定义基于 Redis 或其他外部存储的目录自定义分区策略与现有服务集成Grain Directory 是 Orleans 分布式架构的核心组件,它通过分布式目录服务位置透明性:客户端无需关心 Grain 位置动态扩展性:支持集群弹性伸缩高可用性:容忍 Silo 故障高性能:通过缓存和分区优化查找速度灵活扩展:支持自定义目录实现。原创 2025-12-12 22:55:12 · 511 阅读 · 0 评论 -
GrainType详解
本文通过 UserGrain 示例详细解析了 Orleans 中 GrainType 的作用机制。当客户端调用 UserGrain 时,系统基于 GrainType 自动选择放置策略(如 PreferLocalPlacement),确定目标 Silo 并激活 Grain。GrainType 实现了位置透明性,允许灵活配置不同放置策略(随机、哈希、无状态工作等)以满足各类场景需求,同时确保负载均衡和性能优化。整个过程展示了 GrainType 如何作为核心标识符,协调 Grain 定位、策略选择和目录管理的完原创 2025-12-10 22:17:39 · 745 阅读 · 0 评论 -
Orleans GetGrain<T>(string) 底层原理
本文对比了Orleans异步执行模型与.NET中Task.Run/TaskFactory.StartNew的区别。Orleans采用单激活、回合制执行模型,建议使用自然的async/await方式编写逻辑。Task.Run和TaskFactory.StartNew虽然都能调度线程池任务,但后者默认使用当前调度器且需要手动Unwrap异步lambda。在Orleans中,随意使用这些方法会破坏回合调度的顺序性,导致状态安全风险。最佳实践是在Grain内优先使用async/await串行控制,仅在隔离CPU/阻原创 2025-10-31 22:21:32 · 300 阅读 · 0 评论 -
Orleans 的异步
本文对比了Orleans异步执行模型与.NET中Task.Run/TaskFactory.StartNew的区别。Orleans采用单激活、回合制执行模型,建议使用自然的async/await方式编写逻辑。Task.Run和TaskFactory.StartNew虽然都能调度线程池任务,但后者默认使用当前调度器且需要手动Unwrap异步lambda。在Orleans中,随意使用这些方法会破坏回合调度的顺序性,导致状态安全风险。最佳实践是在Grain内优先使用async/await串行控制,仅在隔离CPU/阻原创 2025-10-31 22:00:51 · 460 阅读 · 0 评论 -
Orleans 自定义二进制协议在 TCP 上层实现的完整过程
Orleans 自定义二进制协议实现解析 协议架构 分层设计:上层应用协议(Grain路由/方法调度)+底层TCP传输层 消息结构:包含帧长度头、元数据头和消息体,支持压缩头信息 核心实现 消息序列化:采用二进制协议,小端序处理,包含消息ID、Grain地址等元数据 连接管理:支持连接池复用,自动维护连接健康状态 传输优化:禁用Nagle算法,支持KeepAlive和快速路径优化 处理流程 本地消息直接路由,跨节点消息通过TCP连接发送 自动处理目标节点失效情况原创 2025-10-27 19:58:09 · 622 阅读 · 0 评论 -
Orleans ILifecycleParticipant 生命周期管理详细分析
Orleans框架中的ILifecycleParticipant<TLifecycleObservable>接口是组件生命周期管理的核心机制。该接口定义了Participate方法,允许组件注册到生命周期观察者中,实现启动和关闭过程的标准化管理。相关接口包括ILifecycleObservable(定义订阅方法)和ILifecycleObserver(定义启动/停止回调)。框架通过ServiceLifecycleStage和GrainLifecycleStage枚举管理不同阶段的执行顺序,确保组原创 2025-10-26 13:29:37 · 672 阅读 · 0 评论 -
Orleans Grain Directory 系统综合分析文档
Orleans Grain目录系统架构分析摘要 本文档通过UML图示系统分析了Orleans分布式Grain目录的核心架构。主要包含: 核心接口层:定义IGrainDirectory、IGrainLocator等基础目录操作接口,支持注册、注销和查找功能 实现层: LocalGrainDirectory处理本地Grain目录管理 CachedGrainLocator提供带缓存的查找机制 分布式定位器(DhtGrainLocator)和客户端定位器(ClientGrainLocator)实现不同场景下的Gra原创 2025-10-25 23:18:58 · 470 阅读 · 0 评论 -
Orleans分布式系统架构详细分析
本文档结合Orleans源代码详细解释分布式系统架构图中的组件交互流程。该图展示了Orleans集群中两个节点(和)之间的通信机制,包括Grain定位、激活、消息传递等核心功能。服务发现:通过Directory服务实现Grain的定位智能放置:通过Placement服务决定Grain的激活位置可靠通信:通过Messaging服务处理跨节点通信透明调用:客户端无需关心Grain的具体位置这种设计实现了高可用性、可扩展性和透明性的分布式系统架构,是Orleans框架的核心优势所在。原创 2025-10-25 12:26:02 · 1054 阅读 · 0 评论 -
Orleans 客户端与 Silo 配置方式深度分析
客户端配置UseOrleans- Silo 服务器配置和UseOrleans是 Orleans 框架中两种不同的配置方式,分别对应客户端和服务器端的角色。它们在架构设计、服务注册、运行时行为等方面存在显著差异。正确选择和使用这两种配置方式对于构建高性能、可扩展的分布式应用程序至关重要。通过源码分析可以看出,Orleans 框架通过严格的互斥性检查和不同的服务注册机制,确保了配置的正确性和系统的稳定性。开发者应该根据应用的具体需求选择合适的配置方式。原创 2025-10-24 22:34:58 · 1012 阅读 · 0 评论 -
Orleans 配置方式时序图
这些时序图清晰地展示了两种配置方式在初始化、服务注册、运行时行为等方面的差异,帮助开发者更好地理解何时使用哪种配置方式。设置 HasOrleansClientBuilder = "true"设置 HasOrleansClientBuilder = "true"设置 HasOrleansSiloBuilder = "true"设置 HasOrleansSiloBuilder = "true"注册 ClientMessageCenter。注册 IClusterClient。原创 2025-10-24 22:33:08 · 577 阅读 · 0 评论 -
Orleans + Kubernetes + Istio 服务网格集成深度解析
本文分析了Orleans分布式系统与Kubernetes和Istio的集成机制。通过Orleans源码解析,展示了Kubernetes环境下状态外置存储、动态服务发现和网络通信的实现原理。Orleans与Kubernetes的集成主要通过环境变量配置、集群成员管理和Pod-Silo对应关系实现。Istio则通过ServiceEntry和VirtualService增强服务发现和流量管理能力。这种架构结合了Orleans的有状态计算能力、Kubernetes的容器编排优势以及Istio的服务网格功能,构建出高原创 2025-10-23 21:50:48 · 675 阅读 · 0 评论 -
SignalR 协议深度分析
SignalR底层通信协议解析:通过握手协议建立连接后,支持WebSocket、长轮询等多种传输方式。核心是JSON/MessagePack格式的RPC消息交换,包含方法调用、流处理等9种消息类型。系统通过连接状态管理、错误处理机制和批处理优化确保可靠性,同时提供身份验证和日志调试支持。该协议实现了C#与JavaScript的双向方法调用,广泛应用于实时聊天、游戏和物联网等场景。原创 2025-10-22 23:04:27 · 437 阅读 · 0 评论 -
SignalR 底层原理详解
SignalR 架构采用客户端-服务器实时通信模型,通过 WebSocket 作为首选传输协议,并支持长轮询等回退机制。其核心 RPC 调用机制实现了双向通信:客户端通过 JSON 或二进制协议序列化消息,服务器端 SignalR Hub 路由到对应方法处理。架构包含连接生命周期管理、分组功能、自动重连机制和安全认证,支持消息批处理和连接池优化性能。服务端提供详细的日志记录和监控能力,确保实时通信的可靠性和可维护性。原创 2025-10-22 23:03:27 · 421 阅读 · 0 评论 -
Orleans Grain生命周期与架构设计手册
本手册全面覆盖了Orleans Grain的生命周期管理、架构设计和高级特性,结合源码实现提供了专业的技术参考。原创 2025-10-22 17:32:22 · 927 阅读 · 0 评论 -
Orleans 与 Kubernetes 结合的价值分析
故障检测的互补性Orleans:应用级别、业务逻辑级别Kubernetes:基础设施级别、系统级别结合:全方位故障检测自动恢复的完整性Orleans:只能检测和标记Kubernetes:提供完整的自动恢复结合:完整的故障处理生命周期运维效率的提升Orleans:需要大量手动干预Kubernetes:提供完全自动化结合:大幅提升运维效率服务可用性的保障Orleans:检测延迟高,恢复需要手动Kubernetes:检测快速,恢复自动结合:更高的服务可用性。原创 2025-10-21 22:15:24 · 1052 阅读 · 0 评论 -
Orleans 可观测性实战:基于源码的指标与分布式追踪(含 Prometheus 集成)
I整理了一份基于源码的 Orleans 可观测性与 Prometheus 集成说明文档(含指标体系、关键代码位置、Tracing、实践建议与 PromQL 示例)。原创 2025-10-20 21:34:26 · 749 阅读 · 0 评论 -
Orleans 序列化、Actor Placement 和 Actor 调用详细分析
Orleans分布式架构核心技术解析 Orleans框架的核心技术包括序列化机制、Actor放置策略和调用机制。在序列化方面,采用多层次架构,支持默认二进制、JSON和自定义编解码器,通过IFieldCodec接口实现高效类型处理。Actor放置策略包含随机、基于哈希、本地优先等多种方式,由PlacementService根据策略选择最优Silo。调用机制建立完整的请求-响应流程,支持远程方法调用和异步处理。整体架构实现了分布式Actor模型的高效运行,通过序列化优化、智能放置和可靠调用机制确保系统性能和可原创 2025-10-19 22:25:52 · 349 阅读 · 0 评论 -
Orleans StreamInstruments 作用分析
StreamInstruments是Orleans流系统的性能监控组件,基于.NET的System.Diagnostics.Metrics框架实现。它主要提供两类核心指标:1)发布-订阅指标,包括生产者/消费者的注册/注销及总数统计;2)持久流指标,涵盖拉取代理数、消息处理量及缓存大小等。通过计数器(Counter)和可观察仪表(ObservableGauge)两种指标类型,实时监控流系统的生产者活跃度、消费者订阅状态、消息吞吐量等关键性能参数。该组件与.NET Metrics原生集成,为系统运维提供容量规原创 2025-10-18 22:48:39 · 906 阅读 · 0 评论 -
Orleans 流系统握手机制流程图
可靠性:多重容错机制确保消息不丢失一致性:通过令牌机制保证消息顺序性能:按需投递,避免重复处理可扩展性:支持多消费者、多流并发可观测性:完善的日志和监控这个握手机制是 Orleans 流系统可靠性的核心保障,通过精心设计的流程和异常处理,确保了分布式环境下的消息可靠投递。原创 2025-10-18 22:25:05 · 212 阅读 · 0 评论 -
Orleans 流系统握手机制时序图
以下时序图展示了 Orleans 流系统中握手机制的完整流程,包括正常情况和异常情况的处理。这个握手机制确保了 Orleans 流系统在复杂的分布式环境中能够可靠、高效地处理消息投递。原创 2025-10-18 22:23:18 · 336 阅读 · 0 评论 -
Orleans 流系统握手机制详解
Orleans 流系统的握手机制是确保消息可靠投递的核心组件。它解决了分布式系统中消息投递的连续性、一致性和容错性问题。协商式设计:消费者和代理协商投递位置状态持久化:关键状态信息持久化存储容错优先:多重容错机制确保系统可用性性能优化:按需投递和状态缓存可观测性:完善的监控和日志记录这种设计使得 Orleans 流系统能够在复杂的分布式环境中提供可靠、高效的消息处理能力。原创 2025-10-18 22:21:45 · 884 阅读 · 0 评论 -
Orleans 流订阅类型检测机制详解
Orleans流订阅类型检测机制包含多层判断逻辑。编译时通过ImplicitStreamSubscriptionAttribute标记隐式订阅,运行时通过Grain类型和流命名空间匹配检查。系统还利用GUID最后字节的高位设置(0x80)来区分隐式/显式订阅。隐式订阅ID由Grain类型和流ID哈希生成,而显式订阅使用随机GUID。消息投递时通过订阅ID的位标记快速判断类型,确保消息正确路由。这种多层次的检测机制保证了流订阅系统的高效性和可靠性。原创 2025-10-18 21:55:33 · 317 阅读 · 0 评论 -
Amazon s3传输对象
这里需要注意的是s3中key的写法,里面包含"路径"。原创 2024-03-11 11:25:03 · 445 阅读 · 0 评论 -
个人网站交流使用
个人做的小网站,有兴趣欢迎使用,也欢迎提出宝贵的意见,你们发现的任何问题,都能让软件变的更好。网站可以用作公司内部信息交流和文件传输,也可以用作亲朋好友交流。原创 2023-12-13 14:50:53 · 498 阅读 · 0 评论 -
Android资源文件以及混淆技术
Android资源文件以及混淆技术转载 2023-08-23 13:16:28 · 431 阅读 · 0 评论 -
INSCODE AI 创作助手-dapr
Dapr(分布式应用程序运行时)是一个开源项目,它提供了一组 API 和工具,用于简化分布式应用程序开发。Dapr 可以轻松地与任何语言和框架集成,并与各种云、Kubernetes、服务器和边缘环境一起使用。Dapr 旨在帮助开发人员构建高度可扩展、可靠和可观测的分布式应用程序,而无需处理常见的分布式系统开发挑战。Dapr 架构包含以下四个组件:依赖注入器:Dapr 使用依赖注入器来将各个组件(如持久性、消息传递和状态管理)与应用程序逻辑分开。这使得应用程序更易于构建、测试和扩展。原创 2023-05-26 15:21:24 · 713 阅读 · 0 评论 -
dapr 调式(1)
五一假期基本结束了。加油。原创 2023-05-03 20:27:36 · 437 阅读 · 0 评论 -
blazor webassembly前后台分离
maui blazor的出现,对于andoid平台,windows平台,苹果平台只需要一套代码,就可以在任意设备运行。前台代码通常部署在nginx下面,nginx作为最经典的反向代理服务器,具有很高的性能,这是因为它使用了多路复用技术,这个技术redis也用了,所以redis的性能会很高。中对前后台分离有基本的介绍,文章基于的是node.js做中转服务实现前后台分离。实现了客户端的实时通讯,它的计算跟渲染都在服务端处理,对服务要求还是蛮高的。随着微服务的兴起,前后台分离现在已经是非常主流的技术了。原创 2023-04-09 22:00:35 · 971 阅读 · 0 评论 -
限速设计及实现(微服务架构)
The Distributed Application Runtime (Dapr) provides APIs that simplify microservice connectivity. Whether your communication pattern is service to service invocation or pub/sub messaging, Dapr helps you write resilient and secured microservices.原创 2022-09-10 17:21:30 · 1867 阅读 · 2 评论 -
设计模式之单例模式(2)
这个算是补上8月分的,8月事情比较多。好久没写破解相关的文章了,接下来会写一些破解的文章,破解的目标是虎牙直播客户端。欢迎大家关注。原创 2022-09-06 13:37:36 · 362 阅读 · 0 评论 -
设计模式系列之状态模式(5)
在 设计模式系列之状态模式(4) 中介绍了状态机和Stateless开源状态机库。本文通过Stateless来实现 设计模式系列之状态模式(2) 中提到的审批流程。请假流程图Stateless实现直接上代码:using Stateless;using Stateless.Graph;const string project_manager_audit = "项目经理审批";const string is_over_three = "是否大于3天";const string depart_原创 2022-05-06 11:28:36 · 497 阅读 · 0 评论 -
设计模式之状态模式(4)
快过年了,想着请假提前回家,于是就不得不向领导提出申请,这个审批流是怎么实现的那?在 设计模式系列之状态模式(2) 中主要是通过在状态类中来对状态进行转化和维护。本文基于此实现一个简易版本的审批流程。审批流请假流程如下:说到请假,我就郁闷,就请半天假用问的那么仔细的。还有那位仁兄,有必要那么较真吗,浪潮的某位领导和同事,都是工作,何苦为难彼此?哎,有些人真的让人很无语的。废话不多说了,简化了UI和数据库的操作,目前的主要的流程:提出申请项目经理审批如果超过3天,需要部门经理审批无论审批结原创 2022-01-24 21:07:44 · 1022 阅读 · 2 评论 -
设计模式系列之状态模式(3)
在设计模式之状态模式中对状态模式进行了介绍,留下了一个悬念,如何彻底干掉if/else。本文主要解决这个问题。状态转化和维护在上一篇文章中,状态的维护在上下文中,这就不可避免的使用到if/else进行判断。如果把状态的维护放在状态的处理类中,那就可以避免大连的if/else使用了。状态处理类中维护状态: 当每一个状态对象处理完自身的状态所对应的功能喉,咳哟根据需要指定后继的状态,以便让应用能够正确处理后续的请求。时序图类图和上面的文章一样,主要看时序图,能够很方便理解上面的内容。恶意投票状态和.原创 2022-01-09 16:15:28 · 608 阅读 · 0 评论 -
记录一次Docker部署(.Net Core部署)
双11买了一个云服务器,闲来无事,想尝试一下Docker。这个时候买一个服务器还是不错的,比平时便宜了好多。Docker使用Docker在使用上非常类似Git。在初识Git中对Git的使用进行了介绍。下面的命令基本够用了。想深入学习的话,可以参考Docker官网。.Net Core在全盘扫描是怎么实现的中对C#的设计架构进行了介绍,这里不过多介绍了。.NET Core是适用于 Windows、Linux 和 macOS 的免费、开源托管的计算机软件框架,是微软开发的第一个官方版本,具有跨平.原创 2021-11-12 21:23:20 · 1604 阅读 · 0 评论
分享