How much does your application weigh when you build it using HTTP Constructs? Can you achieve the same availability and reliability using another alternatives?
● How do you add dynamic hosts? ● Proxy could Crash? ● How to find Proxies? ● Connection Draining ● Latency+ ● Gateway Partitioning Discovery: Reverse Proxies
Discovery: DNS Based ● No Port based Information ● SRV is cool ○ No one uses it ● Some Languages don’t obey TTL. ● Health-check remains external process.
Load Balancing - Then NOTIFICATION SERVER 1 REPLICATED LOAD BALANCER X.Y.Y.Z ? CALLER SERVICE REGISTER I, AM HEALTHY? NOTIFICATION SERVER 2 NOTIFICATION SERVER 3
Load Balancing : Now NOTIFICATION SERVER 2 GILMOUR MANAGER.NOTIFICATION NOTIFICATION SERVER 1 NOTIFICATION SERVER 3 MANAGER.NOTIFICATION MANAGER.NOTIFICATION CALLER SERVICE MANAGER.NOTIFICATION {“NOTIFICATION”: “DATA”}
No/Good Load Balancing ● Has Capacity, Will Serve ● Message delivered to one and all ● Fittest node acquires lock first ● No need for Connection draining
Asynchronous EVENT.POWER_UP EVENT.* EVENT.* GROUP: REVENUE FP SCALING PUSH MESSAGE SERVER ADS/MARKETINGS ERVER UNLOCK LEVEL BADGE SERVICE EVENT.* ADS/ MARKETING GAME GILMOUR (Redis PubSub) EVENT EVENT.BRIDGE_FALL FALL FROM BRIDGE FALL FROM BRIDGE FALL FROM BRIDGE GROUP: BRIDGE_FALL
Asynchronous Caller func sendLog(engine *G.Gilmour) { line := "WordCount" engine.Signal("example.log", G.NewMessage().SetData(line)) line := "Fetching Data" // err will be not nil, if Message for example.log was not received by anyone. _, err := engine.Signal("example.log", G.NewMessage().SetData(line)) }