问题标签 [finagle]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
scala - 如何在 Finagle 中使用带有 RoutingService 的过滤服务
公平的警告,我是 Scala 的新手,所以我可能会在这里遗漏一些简单的东西。
我有这个代码,效果很好
但我想将该授权过滤器添加到我的服务中。如果我添加这个:
我得到一个编译错误:
如果我将服务更改为 Service[HttpRequest, HttpResponse] 类型,我将无法使用它作为 routingService。
由于这些类型错误,我很难让路由服务与过滤器一起使用。
谢谢!
编辑:
我只是想在下面添加一个使用@Septem 答案的代码示例,将其用于过滤器:
我对 finagle 和 scala 还有些模糊-但我想这里发生的事情是我使用的 SimpleFilter 已经假设了某种类型的服务,
finagle - Set HTTP GET Parameters in Finagle
In Finagle, how do I create a request an HTTP GET request with parameters in a safe, clean way?
scala - 如何在 finagle 中托管静态资源
我正在尝试在 finagle 中托管静态资源,例如 javascript 和 css 文件。
我已经设法让它工作,但我必须专门配置每条路由到我的路由服务中的资源文件夹。例如:
和
现在我可以在public
and中获取任何资源,但如果没有更多配置public/bootstrap/css
,我将无法获取。public/bootstrap/js
java - JVM 消耗 100% 的 CPU
我们有一个在 Ubuntu Server 12.04 和 java 上运行的应用程序。
java -版本返回:
java版本“1.7.0_40”
Java(TM) SE 运行时环境 (build 1.7.0_40-b43)
Java HotSpot(TM) 64 位服务器 VM(内部版本 24.0-b56,混合模式
我们还有其他具有相同技术但没有问题的应用程序。
服务器信息:内存:2G 操作系统:Ubuntu Server 12.04 Nb CPU:2
应用程序语言是 scala。
运行一段时间后,JVM 似乎进入休眠状态。一个 CPU 继续以 100% 的速度旋转。
JVM 选项:
-Xms1g -Xmx1g -XX:+HeapDumpOnOutOfMemoryError -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintTenuringDistribution -XX:-DisableExplicitGC -XX:CMSFullGCsBeforeCompaction=1 -XX:+CMSClassUnloadingEnabled -XX:+CMSIncrementalMode -XX:MaxGCPauseMillis=1500 -XX:GCTimeRatio=9 -XX:CMSInitiatingOccupancyFraction=50 -XX:-UseGCOverheadLimit -XX:MaxHeapFreeRatio=60
使用 jstat -gcutil [PID],我看到 FGC 增长很快。
你有这个问题的想法吗?
谢谢
scala - 生成 thrift 文件时出错包含使用 scrooge 的 Union
我用 twitter 的scrooge生成了一个 thrift 服务器,一切运行良好,但是如果我在 thrift 文件中包含联合类型,生成过程将失败:
以下是我在项目中选择的版本(您可以在此处查看我的项目):
sbt 版本:0.11.2
scala 版本:2.9.2
scrooge 插件:addSbtPlugin("com.twitter" %% "sbt11-scrooge" % "3.0.0")
scrooge 运行时:"com.twitter" %% "scrooge-runtime " % "3.1.0"
经过几次尝试,似乎上面是我可以选择的最新 scrooge 版本。
有什么建议吗?谢谢
multithreading - 硬件对异步 JVM 服务器性能的重要性
我正在运行一个 Finatra 服务器(https://github.com/capotej/finatra),它是一个基于 Sinatra 的基于 Finagle(一个异步 RPC 系统)的 scala Web 框架。应用程序应设计为同时接收 10 到 50 个请求。每个请求都非常占用 CPU,主要是由于解析和序列化大型 JSON 以及对数组的操作,如排序、分组等......
现在我想知道以下参数对性能的影响以及如何组合它们:
- 服务器内存
- 服务器核心数
- JVM 堆大小
- 在我的未来池中并行运行的线程数
作为部分回应,我会说:
- 我应该根据 RAM 调整 JVM 堆大小
- 拥有多个内核可以提高并发工作负载下的性能,但并不能真正加快单个请求的处理速度。
- 相反,拥有大 RAM 可以显着加快单个请求的执行速度
- 我的未来池中的线程数必须根据我的核心数进行调整。
编辑
无论代码如何,我都想比较性能,只关注硬件/线程模型。假设代码已经优化。附加信息 :
- 我正在构建一个数据报告 API。请求的处理时间很大程度上取决于我正在处理的数据集。对于大数据集,它最多可以达到 10 秒。
- 我从第三方 API 检索大部分数据,但我也在使用 c3po 连接池机制访问 MySQL 数据库。请求的执行另外委托给未来池以防止阻塞。
- 除 MySQL 外无磁盘 IO
- 我不想在服务器端缓存任何东西,因为我需要处理新数据。
谢谢 !!!
python - gevent:串联组合greenlets
在 Twitter 的Finagle
,map
和flatMap
可用于链接多个异步操作。例如,一个简单的网络爬虫可能会做类似的事情,
我想gevent
在 Python 中做一些非常相似的事情,但我不知道该怎么做。Greenlet.link
似乎是一个开始,但它不能让我访问Greenlet
包含最终结果的内容(据我所知)。
我如何模仿Finagle
和操作?map
flatMap
gevent.Greenlet
http - Scala/Java HTTP 解析 POST 数据形式编码的数组
我使用 Finatra。application/x-www-form-urlencoded; charset=UTF-8
如果我发送数据类型的 POST 数据
在服务器上获取 a 的好方法是什么List
?(name, value)
scala - Finagle 和 Akka,为什么不一起使用呢?
我在实践中没有使用过 Finagle 或 Akka,但我已经阅读了很多关于它们的内容。
Finagle 是一个 RPC 系统,而 Akka 是一个用于高并发应用程序的工具包,为什么所有人都将它们作为两种可能的解决方案进行比较,不能一起使用?我所做的所有搜索都建议使用其中一种,没有人建议将它们一起使用。
例如,Finagle 有一种非常有趣的方式来通过 thrift 及其 IDL 定义端点。使用这个 IDL,我们可以定义一个自定义端点,并通过 scooge 或任何代码生成工具,可以毫不费力地获得服务。此外,还创建了一个连接到此服务的客户端,并自动解决了许多常见的客户端问题(重新连接、超时、重试、负载平衡、连接池……)。
相反,Akka 解决了很多并发问题,并且它的扩展性非常好,没有手动控制线程的所有复杂性。
总而言之,为什么不一起使用它们呢?:
- Finagle + Thrift(及其 IDL):它促进了服务设计和开发以及部署(包括易于横向扩展)。
- Akka:它通过其 Actor 系统使用所有服务器功能,并且如果我更改服务器属性(例如,如果它部署在 EC2 上并且我将我的节点从 m1.small 转换为 m1.large),它的扩展性非常好。
你怎么看?
注意:假设映射 Futures 和 Promises 的问题已经解决,以及 FuturePools 和 ExecutionContexts 之间的不匹配问题。该模式是将 Finagle 转换为使用 Futures 的 scala 方式。
scala - 如何将 Twitter Future[Map[A, Future[C]]] 转换为 Future[Map[A, C]]
我正在尝试解决以下问题:
我有一个 Future[Map[A, B]]。对于所有 B,我需要应用一种将 B 转换为 Future[C] 的方法,并且我想返回一个 Future[Map[A, C]]
这是我到目前为止的代码:
此代码错误,因为它返回 Iterable[Future[(Int, ClientData)]]
对于信息getClients是一个节俭的方法,它返回Future[Map[A, B]]其中 Map 是可变的,所以我需要先用 toMap 将它转换为不可变的地图。
预先感谢您的帮助!