首页
学习
活动
专区
圈层
工具
发布

框架 | spray-routing的核心流程

spray是个性能很好而且功能非常完整的service框架,包含很多组件,从底层http服务器到高层的rest路由DSL都有。一般简单的应用就使用和掌握好最高层的spray-routing就够用。...spray发布http service的流程如下: 整个流程由spray框架控制,http连接处理由spray-can或spray-servlet负责,大部分情况下,开发人员只要定义路由——url和业务服务的映射...——以及对应的业务服务即可,注意这个路由定义并不是一个配置文件,而是spray-routing定义的一套scala的DSL。...据spray-routing文档里说是为了”non-blocking"和"actor friendly",但实际上在spray的后续版本,也就是akka-http里把这个返回类型改成了RouteResult...但大部分时候我们可以用spray-routing通过一组Directive——翻译成中文就是指令——提供的路由DSL来定义我们的路由。这也是spray-routing提供的最核心的功能。

1.7K60
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Dubbo 压测插件的实现——基于 Gatling

    Dubbo 压测插件已开源,本文涉及代码详见 gatling-dubbo Gatling 是一个开源的基于 Scala、Akka、Netty 实现的高性能压测框架,较之其他基于线程实现的压测框架,Gatling...基于 AKKA Actor 模型实现,请求由事件驱动,在系统资源消耗上低于其他压测框架(如内存、连接池等),使得单台施压机可以模拟更多的用户。...全链路压测中我们主要模拟用户实际使用场景,使用 HTTP 接口作为压测入口,但有赞目前后端服务中 Dubbo 应用比重越来越高,如果可以知道 Dubbo 应用单机水位将对我们把控系统后端服务能力大有裨益...CheckBuild 则为 DSL 使用 Check 的辅助类 DSL Dubbo 插件的领域特定语言,我们提供了一套简单易用的 API 方便编写 Duboo 压测脚本,风格上与原生 HTTP DSL...check 方法 DSL trait AwsDsl提供顶层 DSL。

    2.8K10

    Akka(0):聊聊对Akka的初步了解和想法

    花了几天时间研究了一下Akka官方网站上的资料,先在这里把了解的情况在下面做个小结: Akka程序是由多个Actor组成的。...还有一套领域特定语言DSL,是一种独立的编程模式,即Actor编程模式了。...除了普通功能的Actor之外,Akka还提供了几种具有特殊功能的Actor,包括:路由(routingActer)、有限状态机(FSMActor)、持久式(persistenceActor)。...初步打算下面的主攻方向是基于persistenceActor的ES模式数据库应用和基于Actor-http的Microservice工具库。...当然,这些还是需要对Akka进行详细的研究学习后才能有所定论。 刚好,发现在网上的基于scala的Akka讨论示范并不多,那在下面一段时间的讨论里我们就开始从头学习Akka吧。。。

    1.3K80

    Akka 指南 之「调度器」

    请注意,同样的提示也适用于管理 Akka 中任何地方的阻塞操作,包括流、HTTP 和其他构建在其上的响应式库。...在上面的示例中,我们通过向阻塞 Actor 发送数百条消息来加载代码,这会导致默认调度器的线程被阻塞。...有关 Akka HTTP 的类似讨论,请参阅「Handling blocking operations in Akka HTTP」。...阻止操作的可用解决方案 针对“阻塞问题”的充分解决方案的非详尽清单包括以下建议: 在由路由器管理的 Actor(或一组 Actor)内执行阻塞调用,确保配置专门用于此目的或足够大的线程池。...一种常见的模式是为N个 Actor 创建一个路由器,每个 Actor 包装一个 DB 连接,并处理发送到路由器的查询。

    2.2K21

    编码修炼 | 快速了解Scala技术栈

    如果希望执行SQL语句来操作数据库,那么运用相对广泛的是框架ScalikeJDBC,它提供了非常简单的API接口,甚至提供了SQL的DSL语法。...对于分布式的支持,绝对绕不开的框架还是AKKA。它产生的影响力如此之大,甚至使得Scala语言从2.10开始,就放弃了自己的Actor模型,转而将AKKA Actor收编为2.10版本的语言特性。...我在项目中主要将Spray作为REST框架来使用,并结合AKKA来处理领域逻辑。Spray处理HTTP请求的架构如下图所示: ?...Spray提供了一套DSL风格的path语法,能够非常容易地编写支持各种HTTP动词的请求。...Spray对HTTP请求的内部处理机制实则是基于Akka-IO,通过IO这个Actor发出对HTTP的bind消息。例如: IO(Http) !

    2.4K60

    Elasticsearch读写中间件的设计

    保持访问 因为历史原因,访问搜索集群的方式多种多样,有通过原生DSL访问的,也有通过内部封装的业务协议请求的,甚至还有不同版本的协议样式。...业务层 上游业务可以使用rest风格的http协议、原生es http client或者通过我们封装的search-client调用搜索中间件,当然也可以支持监控任务或者开发、运维通过管理接口管理集群配置或者采集统计数据...为结构化的查询请求,这里还有几个问题需要处理: 异步io,在高吞吐的中间件支持异步调用是必要的,可以使用netty或者akka等异步通信框架 并发模型,io和业务处理异步化 上下文管理,多线程处理之后需要考虑请求中的特殊标记在线程间传递...client,如果有多个版本 es 集群存在,可以考虑直接通过http client封装,可以更加方便的控制DSL拼接,也适合对 client 连接池的管理和监控。...查询优化器最后还需要将条件组合为具体的DSL。 中间层- query router 这部分负责路由转发,非拆分索引和只有单路由规则的拆分索引可以根据索引名选择对应的客户端连接发送请求即可。

    2K20

    Akka 指南 之「集群的使用方法」

    在不同的服务之间,「Akka HTTP」或「Akka gRPC」可用于同步(但不阻塞)通信,而「Akka Streams Kafka」或其他「Alpakka」连接器可用于集成异步通信。...此示例的源代码可以在「Akka Samples Repository」中找到。...它包含有关如何运行Worker Dial-in Example示例的说明。此示例的源代码可以在「Akka Samples Repository」中找到。...当一个节点无法访问或离开集群时,该节点的routees将自动从「路由」中注销。当新节点加入集群时,会根据配置向路由添加额外的routees。 详见「Cluster Aware Routers」。...管理 HTTP HTTP API 提供了集群的信息和管理。详见「Akka Management」。 JMX 集群的信息和管理以根名称akka.Cluster的 JMX MBeans 提供。

    5.4K60

    聊聊Akka

    在ActorSystem基础上,Akka也提供了一些配套的组件,比如持久化,Http服务,网络服务等,他们都是构建高可用分布式应用不可或缺的部分,基本架构体系和周边产品如图1-4所示。 ?...Akka自带多种邮箱类型,也提供自定义邮箱的接口。 路由(Routing) 消息除了通过普通的Actor发送之外,也可以通过路由进行发送。...当通过路由发送消息时,我们可以根据需求来选择不同的路由策略,比如轮询、广播等。 持久化(Persistence) 任何程序都可能有失败的可能,即便是JVM如此强大稳定的平台也都一样。...HTTP模块 Akka提供了简单易用的Http模块,支持完整的Http服务端与客户端开发,可以帮助我们快速构建性能极强的Rest Web服务。...相关开源项目 Akka具有高性能、可扩展、设计友好等诸多优点,非常被适合用来作为分布式应用的基础框架,而且由于对Http有非常好的支持,也让它在web服务领域占有一席之地。

    2.6K30

    仅用8个虚拟机,PayPal是如何扩展至日处理数十亿事务的

    本文推荐这两篇的文章的原因在于,Paypal的文章在架构细节上并未提及太多,大多是在他们选择Akka的原因,以及迁移到Akka上的好处。...对网络和路由选择架构造成很大压力: 随着各项服务趋于互联化,请求经过重重传递之后会造成延迟增加、用户体验下降的后果。...规模越大,成本越高昂: 由数百台虚拟机联合提供的服务,由于管理、监控以及无效缓存的问题,势必会造成昂贵的开销。 规模越小,敏捷性越高: 跨越数百台虚拟机部署服务需要花费很长的时间。...PayPal选择了Akka而不是Erlang的原因在于,他们在Java方面的经验更丰富,而Akka正是运行在Java之上的。对于很多人来说,从头学习Erlang并不合适。...PayPal的文章还提及了程序员在适应Akka代码的非线性本质时所遇到的困难,因此在采用这类系统时,所雇人员必须能够适应Akka/Scala培训。

    1.7K60
    领券