Tag: 架构

在VertX中匹配响应处理程序与请求

假设我在1..n个VertX(V)实例前有一个负载均衡器(LB),每个VertX实例都连接到一个队列(Q),并且我有1..m后端(BE)。 用户点击一个按钮发出一个请求,甚至打开一个Web套接字,负载平衡器将请求转发给一个VertX实例,这个实例向队列发出一个请求,其中一个后端消费这个消息并发送一个响应背部; 如果正确的VertX实例使用它,它可以查找响应处理程序并向用户写入响应,如果VertX实例使用错误,则不会有响应处理程序来写入响应,用户将无限期地等待一个回应。 看这个草图: 或者,V2死亡,负载平衡器将用户重新连接到V1,这意味着即使我可以将它发送回与请求完全相同的用户,也不能保证在响应返回时仍然在那里,但用户可能仍然等待通过另一个VertX实例的响应。 我现在正在做的是为每个新的连接生成一个GUID,然后只要websocket连接,将websocket处理程序存储在对照GUID的hashmap中,然后当BE想要响应时,它将扇出所有1 .. VertX实例,当前在其hashmap中具有正确GUID的实例可以向用户写入响应。 这样处理POST / GET也一样。 伪代码: queue.handler { q -> q.handler { val handler = someMap.get(q.guid) // only respond if handler exists if (handler != null){ handler.writeResponse(someresponsemessagehere) } } } vertx.createHttpServer().websocketHandler { ws -> val guid = generateGUID() someMap.put(guid, ws) ws.writeFinalTextFrame("guid=${guid}") ws.handler { val guid = extractGuid(it) // send […]

任何人都可以告诉我kotlin编译器是如何工作的? 它的架构是什么?

我已经开始学习Kotlin了,这真的很棒,但是在Kotlin编译器的工作方式上遇到了一个问题。