kdb 中服务器和网关用户管理的良好架构设计

Good architectural design for server and gateway user management in kdb

我有 2 个网关连接到记录用户详细信息的服务器。
我可以想到两种方式来记录用户通过网关访问服务器。

第一种方式: 日志记录在服务器端完成,即

Server(port 5001) Code:
au:([user:`$()]; tim:`timestamp$()); /- Table to maintain logged users
.z.pw:{`au upsert (x;.z.n); show y; 1b}

Gateway 1:
h:hopen `::5001:a:uts1

Gateway 2:
h: hopen `::5001:b:uts2

第二种方式: 日志记录是从网关完成的,即

Server(port 5001) Code:
au:([user:`$()]; tim:`timestamp$()); /- Table to maintain logged users

Gateway 1:
q)h:hopen `::5001:a:uts1
q)h"`au upsert (`a;.z.p)"

Gateway 2:
q)h: hopen `::5001:b:uts2
q)h"`au upsert (`b;.z.p)"

因此,在服务器端(服务器)或客户端(在本例中为网关)编写用户登录代码是否好,或者是否有 better/standard 方法可以做到这一点?

编辑 - 如果我们在多个网关和多个服务器之间添加一个中间件(用户管理器)怎么办,在这种情况下,最好在中间件(用户管理器)或客户端(在本例中为网关)?

如果用户通过网关连接到多个服务器,我将在 GW 级别实现用户日志记录和身份验证。这将进一步从潜在的未授权用户那里提取敏感数据,并简化保留主记录帐户 activity 的过程,因为所有用户都需要通过 GW。在服务器端执行帐户 activity 需要对多个服务器进行聚合才能获得系统 activity 的全貌。