- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
连接到奥尔良服务器的正确方法是什么?
可以说我有一个移动应用程序,我想从该应用程序连接到奥尔良服务器。
我应该直接连接到奥尔良还是使用某些前端服务器(为什么?)
如果直接使用,我应该使用奥尔良流或自定义套接字连接。
如果我不能使用奥尔良客户端(和流),应该如何实现接受套接字连接的谷物。如果不使用谷物,甚至有可能将谷物从内存中逐出吗?
如果前端是前端,那么前端本身是否必须是谷物?
最佳答案
您有多种选择,可以使用自定义TCP套接字将移动应用程序连接到Orleans群集。有多种使用奥尔良构建系统的方法,但为简单起见,我将在此处提供三种模型:
奥尔良系统的中心部分是奥尔良集群。该集群包含多个奥尔良孤岛,这些孤岛是过程,在生产环境中,您将至少有三个孤岛,每个孤岛都在单独的主机上运行。集群中的孤岛将相互通信以调用粒度方法并维护集群,并且由于它们位于不同的主机上,因此通信将通过网络进行。
前端和群集分开
连接移动应用程序的第一个选项是创建一个单独的前端主机组,在其中执行自定义TCP套接字服务。当套接字服务收到请求时,它使用Orleans grain client与Orleans集群进行通信。谷物方法调用的代码看起来像一个简单的方法调用,但实际上,该调用是通过网络从前端发送到Orleans集群的。
如果要从套接字服务器“推送”到移动应用程序,则还需要能够将消息从Orleans群集推送到前端。有两种方法可以做到这一点:
使用grain observer
使用streams
我认为在某些时候,信息流比观察者更受青睐,但我认为情况不再如此。通常,观察者使用起来稍微容易一些,但是观察者方面的错误不会传播回集群,因此与能够传播错误的流相反,它本质上是一劳永逸的机制。
前端和群集在同一过程中
当前端与Orleans群集分开托管时,您会获得一些安全性,因为Orleans筒仓主机不会直接暴露给Internet。但是,每个请求或推送消息都需要一个额外的网络跃点。为避免这种情况,您可以将筒仓和套接字服务组合到一个进程中,而不是拥有单独的前端主机和筒仓主机,而现在只有一个集群既可以操作套接字服务,又可以运行Orleans。
但是,您必须解决一个问题。除非使用谷物客户端,否则即使使用与谷物相同的进程也无法调用谷物。幸运的是,现在存在一个托管客户端,该客户端允许您从同一个进程但在筒仓外部进行谷物调用,而不必使用通过网络发送数据的完整谷物客户端。这是一个相当新的功能,我还没有看到any documentation about how to use this yet。
筒仓充当套接字服务
无需使用谷物客户端调用Orleans群集并使用观察者/流将消息发送到群集之外,您可以将整个套接字服务托管在群集中的谷物中。您需要实现一个可以充当自定义TCP套接字服务器的粒度。要启动此服务器,您需要使用startup task,它将调用RunAsync()
方法(或其他方法)来启动套接字服务器。
您可能希望该谷物的一个实例在每个筒仓中处于活动状态。有多种方法可以实现这一目标。您可以使用stateless worker,也可以使用一种放置策略,以确保将套接字服务器粒度放置在执行启动任务的筒仓中。基本思想是,当启动新筒仓时,将执行启动任务,并且此任务可确保在筒仓中激活了所需的谷物。奥尔良将删除不活动的颗粒,因此您还必须确保永远不会停用套接字服务器颗粒。您可以通过配置或通过延迟晶粒内部的停用来执行此操作。
由于套接字服务器位于grain中,因此您可以自由调用其他grain方法,而不必通过单独的grain客户端,而可以使用套接字服务器grain的GrainFactory
属性。如果套接字服务器要求您启动将使用GrainFactory
的独立任务,则必须注意有关grains and tasks的规则。
如果您的“自定义TCP套接字”是Web套接字,并且可以使用.NET Core构建系统,则建议您将ASP.NET Core与web sockets middleware(不是SignalR)一起使用,并使用单独的前端主机或共享主机使用Orleans托管客户端在前端和Orleans集群之间切换。
如果要构建完整的自定义TCP套接字解决方案,则可能必须处理加密和身份验证。使用Web框架和HTTPS时,可以立即使用。奥尔良可以帮助您进行加密密钥等的状态管理,这是可行的,但需要一些努力。我从实际经验中知道这一点。
关于c# - 奥尔良-自定义TCP套接字连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55021791/
我知道这个问题可能已经被问过,但我检查了所有这些,我认为我的情况有所不同(请友善)。所以我有两个数据集,第一个是测试数据集,第二个是我保存在数据框中的预测(预测值,这就是没有数据列的原因)。我想合并两
在 .loc 方法的帮助下,我根据同一数据框中另一列中的值来识别 Panda 数据框中某一列中的值。 下面给出了代码片段供您引用: var1 = output_df['Player'].loc[out
当我在 Windows 中使用 WinSCP 通过 Ubuntu 连接到 VMware 时,它提示: The server rejected SFTP connection, but it lis
我正在开发一个使用 xml web 服务的 android 应用程序。在 wi-fi 网络中连接时工作正常,但在 3G 网络中连接时失败(未找到 http 404)。 这不仅仅发生在设备中。为了进行测
我有一个XIB包含我的控件的文件,加载到 Interface Builder(Snow Leopard 上的 Xcode 4.0.2)中。 文件的所有者被设置为 someClassController
我在本地计算机上管理 MySQL 数据库,并通过运行以下程序通过 C 连接到它: #include #include #include int main(int argc, char** arg
我不知道为什么每次有人访问我网站上的页面时,都会打开一个与数据库的新连接。最终我到达了大约 300 并收到错误并且页面不再加载。我认为它应该工作的方式是,我将 maxIdle 设置为 30,这意味着
希望清理 NMEA GPS 中的 .txt 文件。我当前的代码如下。 deletes = ['$GPGGA', '$GPGSA', '$GPGSV', '$PSRF156', ] searchquer
我有一个 URL、一个用户名和一个密码。我想在 C# .Net WinForms 中建立 VPN 连接。 你能告诉我从哪里开始吗?任何第三方 API? 代码示例将受到高度赞赏... 最佳答案 您可以像
有没有更好的方法将字符串 vector 转换为字符 vector ,字符串之间的终止符为零。 因此,如果我有一个包含以下字符串的 vector "test","my","string",那么我想接收一
我正在编写一个库,它不断检查 android 设备的连接,并在设备连接、断开连接或互联网连接变慢时给出回调。 https://github.com/muddassir235/connection_ch
我的操作系统:Centos 7 + CLOUDLINUX 7.7当我尝试从服务器登录Mysql时 [root@server3 ~]# Mysql -u root -h localhost -P 330
我收到错误:Puma 发现此错误:无法打开到本地主机的 TCP 连接:9200(连接被拒绝 - 连接(2)用于“本地主机”端口 9200)(Faraday::ConnectionFailed)在我的
请给我一些解决以下错误的方法。 这是一个聊天应用....代码和错误如下:: conversations_controller.rb def create if Conversation.bet
我想将两个单元格中的数据连接到一个单元格中。我还想只组合那些具有相同 ID 的单元格。 任务 ID 名称 4355.2 参与者 4355.2 领袖 4462.1 在线 4462.1 快速 4597.1
我经常需要连接 TSQL 中的字段... 使用“+”运算符时 TSQL 强制您处理的两个问题是 Data Type Precedence和 NULL 值。 使用数据类型优先级,问题是转换错误。 1)
有没有在 iPad 或 iPhone 应用程序中使用 Facebook 连接。 这个想法是登录这个应用程序,然后能够看到我的哪些 facebook 用户也在使用该应用程序及其功能。 最佳答案 是的。
我在连接或打印字符串时遇到了一个奇怪的问题。我有一个 char * ,可以将其设置为字符串文字的几个值之一。 char *myStrLiteral = NULL; ... if(blah) myS
对于以下数据 - let $x := "Yahooooo !!!! Select one number - " let $y := 1 2 3 4 5 6 7 我想得到
我正在看 UDEMY for perl 的培训视频,但是视频不清晰,看起来有错误。 培训展示了如何使用以下示例连接 2 个字符串: #!usr/bin/perl print $str = "Hi";
我是一名优秀的程序员,十分优秀!