问: 假设我有这个脚本: export.bash #!...echo $VAR 有没有一种方法可以通过只执行 export.bash 而不 source 它获取 $VAR? 答: 不可以。 但是有几种可能的解决办法。...在调用 shell 的上下文中执行脚本: $ cat set-vars1.sh export FOO=BAR $ . set-vars1.sh $ echo $FOO BAR 另一种方法是在脚本中打印设置环境变量的命令.../set-vars2.sh)" $ echo "$FOO" BAR 在终端上执行 help export 可以查看 Bash 内置命令 export 的帮助文档: # help export export...help eval 相关阅读: 用和不用export定义变量的区别 在shell编程中$(cmd) 和 `cmd` 之间有什么区别 ----
这是Orleans团队的帖子。Orleans是用于使用.NET构建分布式应用程序的跨平台框架。有关更多信息,请参见 https://github.com/dotnet/orleans 。...自2.0版以来的一些标题更改是: 分布式ACID事务-无论状态存储在何处,多个颗粒都可以加入事务 一个新的调度程序,仅在某些情况下,其性能就提高了30%以上 基于Roslyn代码分析的新代码生成器 重写集群成员资格以提高恢复速度...这些抽象使我们能够通过配置更改网络传输,而无需修改内部或特定于Orleans的联网代码。Orleans的TLS支持作为基岩中间件实现,我们的目的是使之通用,以便可以与.NET生态系统中的其他人共享。...例如,Orleans事务使用Grain扩展对用户透明的向Grain中添加事务生命周期方法,如“准备”、“提交”和“中止”。Grain扩展现在也可用于Grain服务和系统目标。...现在,自定义事务状态可以声明其在事务中能够扮演的角色。例如,将事务生命周期事件写入服务总线队列的事务状态实现不能满足事务管理器的职责,因为它(该事务状态的职责)是只写的。
在Orleans中,客户端与Silo之间的通信使用了一种名为Orleans Messaging Protocol (OMP)的自定义协议,用于保证通信的可靠性和效率。...示意图如下所示: 内置端口 默认情况下,Orleans 将侦听端口 11111 用于silo之间通信,在端口 30000 上进行客户端到接收器通信。...中,可以使用不同类型的键来标识 Grain。...IGrainFactory: IGrainFactory 是 Orleans 用于集群中创建 Grains 的工厂接口。...它通常用于在 Orleans Silo 或者 Orleans Client 中创建 Grains 实例。
World吧,Orleans是为分布式和云计算而生的框架,那么今天我们就简单说一说容灾、集群、容灾与集群在Orleans中的运用。...重点在我圈出的3行代码。 SeedNode silo(筒仓)地址这个地址是配置了我属于某一个silo,某个silo可以使用我。...1.计算者1 2.计算者2 3.silo管理者 而node1承载着1、3这两个角色,这时候肯定会会有人提出疑问:“这样压力不还没有分担掉吗?如果我的node1挂了就全完了?”...答案是肯定的,这也是为什么orleans不推荐在正式环境使用这种集群方式,后续章节中我们会介绍其它的集群方案,让silo管理者的角色分配给应该负责的人。 请求结构 ?...Next 下一篇会说下如何将soli管理者的角色分担出去,分担的方式orleans提供了:MySQL,SQL Server、Zookeeper、Azure Table。
上面这张图中包含了Orleans中的几个核心概念: Grain Silo Orleans Cluster Orleans Client 从这张图,我们应该能理清他们之间的关系。...Cluster集群 一个Cluster中的Grain是可以直接进行交互 客户端通过Orleans Client与Cluster建立连接 Orleans 的第一公民:Grain Grain 简介 上面已经提到...如果是在单机环境,通过内存引用还可以进行直接访问。但对于分布式应用,Grain可能分布在集群中的任一机器,简单的内存引用,是无法实现跨机器寻址的。...以订单举例,为了标识某一个具体订单,我可以赋予订单一个唯一的订单编号,通过这个编号就可以找到具体的某个订单。 Grain Identity 也就是这种思路。...Silo的宿主:Orleans Server Silo本质上是一个进程单元,是需要运行在操作系统之上的,因为.NET Core的跨平台特性,所以可以运行在Windows、Linux或Mac系统中,当然也可以运行在相应的容器中
以下是自Orleans 2.0以来的重大变化: · 分布式ACID事务-多个Grains加入到一个事务中,不管他们的状态存储在哪里 · 一个新的调度器,在某些情况下,仅它就可以将性能提升30%以上 ·...通过通用主机进行联合托管 ---- Orleans与其他框架共同进行联合托管,如ASP.NETCore,得益于.NET通用主机,相同的进程中(使用联合托管)现在要比以前容易多了。...这个功能可以简化你的部署拓扑或者向现有程序中额外添加功能。一些团队内部使用联合托管,通过ASP.NET Core健康检查将Kubernetes活跃性和就绪性探针添加到其Orleans Silo中。...例如,Orleans事务使用Grain扩展对用户透明的向Grain中添加事务生命周期方法,如“准备”、“提交”和“中止”。Grain扩展现在也可用于Grain服务和系统目标。...现在,自定义事务状态可以声明其在事务中能够扮演的角色。例如,将事务生命周期事件写入服务总线队列的事务状态实现不能满足事务管理器的职责,因为它(该事务状态的职责)是只写的。
包括用户名、密码和用于 JWT 签名的 Secret。 随后的生成 JWT 生成和验证都将直接使用 UserGrain 中的数据。...由于 UserGrain 中的数据是在一段时间内是 “缓存” 在内存中的。所以之后的 JWT 生成和验证将非常快速。实测约为 0.5 ms。...Orleans Cluster 托管 Grain 的核心进程....基本相同,但增加了 Dashboard 的展示,以查看整个 Orleans 集群的情况 Consul 用于 Orleans 集群的集群发现和维护 Claptrap DB 用于保存 Newbe.Claptrap...而且如果修改代码, Orleans Dashboard 和 WebAPI 是可以合并的。 所以最小规模就是一个进程加一个数据库。 Grafana 为什么没有报表?
总体而言,优化空间不大,但应用的整体复杂度却随着引入的新的技术框架而迅速增加,对于应用的维护,是一个潜在的定时炸弹。 这个时候你可能会想,既然单体应用单机部署不能满足需求,我可以做集群啊。...通过将单体应用按照分层结构进行纵向分离,将数据库从应用服务器分离,将缓存从应用服务器分离。这样就可以对分离的各个部分进行分别部署,再借助负载均衡完成集群效应。到这一步,你的应用应该能撑一段时间了。...但是这里我要向你讨教几个问题: 这个状态是指什么? 何为有状态? 何为无状态? 大家不妨先停下来思考一下。(欢迎大家在评论中阐述不同观点。) 这里,我尝试从以下两个角度来谈下自己的看法: 1....独自持有非共享的成员就可以说这个对象实例是有状态的吗?这里面你就要看清状态和有状态的区别!举个简单例子,大街上你看到一大叔开着豪车,你觉得他很富有。“开着豪车”是你即时看到的状态属性。...在Orleans中Virtual Actor由Grain来体现。 Orleans中核心优势:开发效率高、透明可伸缩。
Orleans 是属于 .Net 基金会的一个项目,本文将简要介绍该项目相关的信息。 中文介绍 中文介绍内容翻译自英文介绍,主要采用意译、如与原文存在出入,请以原文为准。...Orleans Orleans 为开发分布式、可伸缩的计算型应用程序提供了明显的方案,开发者无需学习如何进行复杂的并发处理以及其他的伸缩性相关的软件模式。...Orleans 已经被微软的多个小组应用于 Microsoft Azure 之,其中最为突出的便是 343 Industries 公司将其作为游戏 Halo 4 (光晕 4) 和 Halo 5 的后台云服务平台...该框架也被应用于很多其他的产品和公司,此处就不一一列举。...关于 Actor 模式,开发者可以参看一下笔者的这篇《Newbe.Claptrap-一套以“事件溯源”和“Actor模式”作为基本理论的服务端开发框架》。
特性 可扩展 低延迟 简化并发 从上述的简介可以看出Orleans就是为了分布式、并发而生,那么大并发、高用户量也可以得到解决。...是否可靠我也不确定,但是案例还是很诱人的,特别是微软官方游戏:Halo4、Halo5(光环|光晕)的云服务全部由它来承载。当然还有其它的用户,不过我都不怎么认识,就不列出了,大伙可以去官网查看。...Silos(筒仓) Silos可以理为一台Server,里面主要用于存储Grains,也就是说Grains开发完成后需要注册到Silos中,然后等待调用。...在”Sample.Implements“中添加对项目”Sample.Interfaces“的引用。 在”Client“项目中添加对项目”Sample.Interfaces“的引用。...本文主要是做一个简单的介绍和Demo的效果,在后续章节中我会继续带来一些更实用的特性介绍与剖析,虽然我也在摸索中,但尽量不误导大伙。。。
我在2015年下半年开始应用Orleans,当时公司的交易系统采用的架构就是基于Orleans框架的,其展现出来的高性能、高并发以及惊人的稳定性深深地吸引了我,也让我认识到了传统三层无状态架构的缺陷。...并行性:当顶级Actor将任务分拆后发送给多个下级Actor后,可以使用Actor模型的并行处理方式 位置透明:可以使用抽象引用表示Actor对象的地址 Future/Promise对象:这是对异步操作的发送与接收方式...虚拟Actor的引入,相当于为开发者提供了一个虚拟的内存空间,使开发人员可以调用系统中的任何角色,无论它是否存在于内存中。虚拟化依赖于从虚拟角色映射到当前运行的物理实例的间接寻址。...运行时通过一个分布式目录支持间接寻址,该目录将Actor标识映射到其当前物理位置。Orleans通过使用该映射的本地缓存来最小化间接寻址的运行时开销。这个策略被证明是非常有效的。...在我们的生产服务中,缓存命中率通常远远超过90%。 下图展示了微软对Orleans的应用 ?
eBPF 最初被设想为一个内核虚拟机,用于数据包过滤,但它已经发展成一个强大的框架,支持广泛的用例,包括网络、安全和可观测性。...当我在以色列总理办公室工作时,我有机会使用世界上在网络安全方面最尖端的技术。几年后,我注意到并关注的技术之一是 eBPF。它在安全领域的能力突然在其他领域也同样重要,比如可观测性。...随着越来越多的组织采用云原生架构和微服务,对动态和可编程网络解决方案的需求变得至关重要。 eBPF 在内核级提供精细颗粒度的可见性和控制的能力使其成为一个有吸引力的技术,用于解决现代网络架构的挑战。...思科会悄无声息地终结 Cilium 这个项目吗?或者我们会看到这些封闭源大公司在 eBPF 社区及其企业产品之间取得正确的平衡?只有时间才能证明。...有一点可以肯定:eBPF 不是空洞的流行词语,而是一个真实的、会持续存在的趋势。
Orleans 简介 Orleans是一个跨平台框架,用于构建健壮,可扩展的分布式应用程序 Orleans建立在.NET开发人员生产力的基础上,并将其带入了分布式应用程序的世界,例如云服务。...这样,它可以帮助具有单服务器应用程序经验的开发人员过渡到构建弹性,可扩展的云服务和其他分布式应用程序。因此,Orleans通常被称为“分布式.NET”。...Orleans的核心贡献是它的编程模型,它在不限制功能,以及对开发人员施加繁重约束的情况下,降低了高并发分布式系统固有的复杂性。...中文文档说明 2019年10月,我在Orleans官网提了一个Issue,希望开展Orleans文档本地化的工作,一年时间过去了,是时候该给自己,给社区一个交代了,目前Orleans中文文档已部署上线,...目前文档仍旧在完善当中,期望更多读者能参与到校对工作中为.NET生态建设添砖加瓦。
很显然,这在真实应用场景中不被允许。 在第一节中,已经对有状态和无状态有了解释,关键的区别在于:状态数据的是否持久化。...针对统计登录用户的需求来说,其中的状态数据就是在线用户列表,所以可以直接定义一个LoginState来将行为和数据解耦。...只是为了方便开发,显然在生产环境中是万万不可的。...依次执行以下脚本,SQLServer-Main.sql、SQLServer-Persistence.sql 创建用于存储相关状态表。...添加配置代码 为了简化配置,我做了一个简单的包装项目Orleans.AdoNet.Extensions,以简化SqlServer、MySql、Oracle和PostgreSql 的配置。
透明的水平扩展:Orleans7支持透明的水平扩展,可以自动地将负载平衡在集群中的各个节点上,无需手动管理节点。...高度可扩展性:Orleans7可以轻松地扩展以应对不同规模和负载的系统需求,使其适用于大型和高流量的应用场景。...高可用性:Orleans7提供了内置的故障恢复和容错机制,使得系统可以在节点故障时保持可用性,提高了系统的稳定性。...分布式状态管理:Orleans7提供了强大的分布式状态管理机制,可以轻松地在集群中共享和管理状态,避免了传统分布式系统中状态同步的复杂性。...Orleans7适用于需要构建高性能、高可用性和高度可扩展性的分布式系统的场景,如在线游戏、实时分析、物联网应用等。
本文将介绍 Orleans 的核心概念,并通过一个简单的示例代码来演示其用法。 什么是 Orleans?...Actors 之间通过消息传递进行通信,而不共享内存,从而避免了传统并发编程中常见的锁和共享状态问题。 Orleans 能应用于哪些场景?...Orleans 中的 Grain 与 Silo Grain:Grain 是 Orleans 中的基本执行单元,代表了应用程序的业务逻辑和状态。...通过这个简单的示例,我们可以看到 Orleans 框架的基本用法以及 Grains 和 Silos 之间的关系。...通过这个示例,读者可以更好地理解 Orleans 框架的核心概念,并在实际应用中尝试构建分布式系统。
代码中我们定义了一个List集合用于保存登录用户。 4....第一个Silo Host(Server) 定义一个Silo用于暴露Grain提供的服务,在Orleans.Server.Program中添加以下代码用于启动Silo Host。...对于详细的配置也可以先参考Orleans Server Configuration。后续也会有专门的一篇文章来详解。 5....(需要注意的是,这里的ClusterId必须与Orleans.Server中配置的保持一致。...通过构造函数注入需要的IClusterClient。 通过指定Grain接口以及身份标识,就可以通过Client 获取对应的Grain,进而消费Grain中暴露的方法。
在Orleans 7中,Grain放置是指确定将Grain对象放置在Orleans集群中的哪些物理节点上的过程。 Grain是Orleans中的基本单位,代表应用程序中的逻辑单元或实体。...Grain放置策略是一种机制,用于根据不同的因素,将Grain对象放置在合适的节点上,以实现负载均衡、最小化网络延迟和提高容错性。...Grain放置的概念 Grain放置是指将Grain对象放置在Orleans集群中的物理节点上的过程。...Grain放置的依据 Orleans 7中Grain放置的依据主要包括: 负载均衡:确保集群中的每个节点负载尽可能均衡,避免某些节点负载过重。...网络拓扑:考虑物理网络拓扑结构,将Grain对象放置在合适的物理节点上,以减少通信延迟。 容错性:确保Grain对象在集群中的高可用性和容错性,避免单点故障。
在分布式系统中,数据的持久化是至关重要的一环。 Orleans 7 引入了强大的持久化功能,使得在分布式环境下管理数据变得更加轻松和可靠。...本文将介绍什么是 Orleans 7 的持久化,如何设置它以及相应的代码示例。 什么是 Orleans 7 的持久化?...Orleans 7 的持久化是指将 Orleans 中的状态数据持久化到外部存储介质,以便在应用程序重新启动或节点故障时能够恢复数据。...这对于构建可靠的分布式系统至关重要,因为它确保了数据的持久性和一致性。 持久化使得 Orleans 可以在不丢失数据的情况下处理节点故障或应用程序的重新启动。...它还可以用于支持扩展性和负载平衡,因为数据可以在集群中的不同节点上进行分布式存储。 Orleans 7 的持久化怎么设置?
领取专属 10元无门槛券
手把手带您无忧上云