主页

怎样在 Akka Persistence 中实现分页查询

在 Akka Persistence 中,数据都缓存在服务内存(状态),后端存储的都是一些持久化的事件日志,没法使用类似 SQL 一样的 DSL 来进行分页查询。利用 Akka Streams 和 Actor 我们可以通过编码的方式来实现分页查询的效果,而且这个分页查询还是分步式并行的…… EventSourcedBehaviorAkka Persistence的EventSourcedBehav

2019年12月深圳Scala Meetup预热:《Akka HTTP、gRPC与Typed Actor工程实践》

2019年12月深圳Scala Meetup1. 活动介绍 好久不见,继Tubi TV赞助的两场北京Scala Meetup圆满落幕,深圳的Scala Meetup又要开幕啦!虽然连深圳都变冷了,但是Scalaer的热情丝毫不减,欢迎大家前来一起探讨Scala在生产环境中的实践和应用! 2. 时间地点 时间:2019年12月21日下午 13:00-18:00 (13:00开始签到)地点:深圳市罗湖

Why gRPC (Akka) ?

原文链接:https://doc.akka.io/docs/akka-grpc/current/whygrpc.html 什么是gRPC?gRPC是一个支持请求/响应和流式处理(非持久化)用例的传输机制。 它是一个模式优先的RPC框架,协议在 Protobuf服务描述符(protobuf service descriptor)中声明,请求和响应将通过 HTTP/2 连接流式的传

Akka Typed 常用交互模式

本文将探讨Akka Typed下actor的常用交互模式,相对经典的untyped actor,typed actor在交互与使用方式上有着显著的区别。对Akka Typed还不太了解的读者可以先参阅我的上一篇文章:《Akka Typed新特性一览》。 本文大量参译了Akka官方文档《Interaction Patterns》一文(原文链接:https://doc.akka.io/docs/akk

Akka Typed新特性一览

Hello Scala!Akka Typed Actor从2.4开始直到2.5可以商用,进而Akka 2.6已经把Akka Typed Actor做为推荐的Actor使用模式。Typed Actor与原先的Untyped Actor最大的区别Actor有类型了,其签名也改成了akka.actor.typed.ActorRef[T]。通过一个简单的示例来看看在Akka Typed环境下怎样使用Act

Akka微服务实践-初探

目录 微服务 配置 Java Properties Typesafe Config 服务发现 Akka Discovery Nacos(溶入Spring Cloud) 服务 序列化 JSON Protobuf 服务协议 RESTful(Akka HTTP) gRPC(HTTP 2) 集群 使用Akka Discovery + Akka gRPC构建微服务集群 Akka Clus

使用Lightbend Config

Lightbend config 提供了一种叫 HOCON 的标记语言来进行配置管理,它是JVM上的配置管理工具,可用来替代Java自带的Properties;而相对于使用JSON来管理配置,它具有注释、变量、可组合等更丰富的特性。本文分享些日常开发工作中使用Lightbend config的经验和技巧。 Lightbend config以前叫Typesafe config,Github地址为:h

Scala实战:使用Akka Stream优化异步代码

Scala扫盲行动 背景今天同事在开发一个消息推送功能,业务还是比较简单的: 通过地区查找这个区域内的所有组织 通过组织ID获取每个组织的所有用户 通过用户ID获得所有绑定了设备IMEI号 通过IMEI号向设备上推送消息 0 业务代码123456789101112131415implicit val system = ActorSystem()implicit val mat = Act

PostgreSQL高可用:JDBC优化

JDBC URL连接参数 targetServerType = String: 只允许连接到具有所需状态的服务器,许可的值有any、master、secondary、preferSecondary。主/从区别目前是通过观察服务器是否允许写入来实现的。如果有可用的值,preferSecondary将尝试连接到secondary,否则将返回到允许连接的master。 loadBal

PostgreSQL高可用 - PG 11集群

《PostgreSQL从入门到不后悔》 《PostgreSQL高可用:逻辑复制》 《PostgreSQL高可用 - PG 11集群》 高可用性:数据库服务器可以一起工作, 这样如果主要的服务器失效则允许一个第二服务器快速接手它的任务 负载均衡: 允许多个计算机提供相同的数据 本文使用的主要技术有: CentOS 7 x86_64 PostgreSQL 11.4 系统安装、配置1234

PostgreSQL高可用:逻辑复制

《PostgreSQL从入门到不后悔》 《PostgreSQL高可用:逻辑复制》 《PostgreSQL高可用 - PG 11集群》 从PostgreSQL 10(以下简称PG)开始,PG支持逻辑复制能力,可实现仅复制部分表或PG服务器上的部分database。逻辑复制的一大优点是支持跨版本间复制,也不需要主从节点的操作系统和硬件架构相同。例如,我们可以实现一台Linux服务器上的PG 11和

Akka启用ssl和HTTP 2

Akka原生支持SSL、HTTPS、HTTP 2,本文记录下各SSL的使用配置。 X.509证书 公钥证书是解决身份问题的一种方法。若仅加密是可以建立一个安全的连接,但不能保证你正在与你认为正在与之通信的服务器通信。如果没有某种方法来验证远程服务器的身份,攻击者仍然可以将自己作为远程服务器,然后将安全连接转发到伪造的远程服务器。公钥证书就是用来解决这个问题的。 考虑公共密钥证书的最佳方法是使用护照

WS SSL快速起步 - lightbend SSL Config

原文:Quick Start to WS SSL 本文适用于需要通过 HTTPS 连接到远程 Web 服务而不想阅读整个手册的用户。如果需要设置 Web 服务或配置客户端身份认证,请阅读 Generating X.509 Certificates 。 通过 HTTPS 连接到远程服务器如果远程服务器正在使用一个由已知证书颁发机构签发的证书,那么WS应该在不进行任何额外配置的情况下即可正常工作。这里

Akka实战:再谈断点上传

去年的文章:《Akka实战:HTTP大文件断点上传、下载,秒传》 通过示例介绍了在Akka HTTP里怎样实现断点上传功能。通过一段时间的应用,发现了些问题,这篇文章再深入介绍下。在 https://github.com/yangjing/scala-applications/tree/master/file-upload能找到完整的源码。 Nginx代理Nginx代理时默认会在Nginx端收到完

Firewall快速使用

基本使用查询状态1sudo firewall-cmd --zone=public --list-all 打开端口1sudo firewall-cmd --zone=public --permanent --add-port=3306/tcp --permanent选项设置匹配永久生效,但需要调用--reload使firewall重新加载配置使其马上生效。 使规则生效1sudo firewall

使用WebFlux与Reactor-当流为 Empty 时的注意事项

注意empty会造成之后的所有转换操作不执行当Mono<T>的计算结果为empty时,在它之后添加的多个转换操作都不会被触发执行。有一些方法可以解决这个问题: 使用Optional<T>来包裹可能为空的数据类型。 1Mono<Optional<User>> findById(String userId); 使用.switchIfEmpty或.

反应式的Spring

Spring从5.0开始拥抱反应式(Reactive)开发,通过Reactor和WebFlux来支持反应式的开发模式。有关反应式更多的内容可以阅读 《反应式宣言》 。反应式系统具有以下物质:即时响应性(Responsive)、回弹性(Resilient)、弹性(Elastic)以及消息驱动(Message Driven)。 对于这样的系统,我们称之为反应式系统(Reactive System)。这