Message Queue的应用场景
- 发送email给用户。当用户注册成功之后,发送一个confirmatioin给用户。在这种应用场景,用户不用立即得到email,能够忍受MQ带来的latency。调查一下有哪些Message Queue的应用和如何应用它。
用WebSocket是否适用于所有的应用场景?
- Websocket可能会占用很多的资源,不如http节省。
Monolithic application 单一的巨大的应用,它不会和外部交流。把所有的东西都放在一起。开发部署和测试。我们都知道要对它进行解藕,但是如何才能解藕。如果一个应用已经跑了十年之久,你如何重构它?
windows 98时代UI和内核是混合在一起的,所以有时候UI崩溃之后,连带着内核也崩溃掉。所以经常出现系统崩溃。新windows已经将UI和内核分离。
Monolithic app的优势: 简单,延迟非常小,一个code base部署简单,小规模的应用可以节省资源;劣势:横向scale会很难??为何。所有东西都打包在一起,需要很长时间build的deployment即使很小的改动。。。
12 Factor Application
- Does your application have to be 12 factor app?
- Is this methodology language agnostic?
- Spring boot wraps a lot of 12 factors.
XML RPC (remote procedural call) Microserivce?那gRPC是microservice吗?
本地和远程的调用是分开的,在这个角度它是microservice;在另一些角度它又不是microservice
Service Oriented Architecture (SOA)是微服务吗:需要去研究一下这种架构。“太重了” - Ross老师如是说。如果只把模块之间的soap换成rest api那么能够变成microservice吗?最重要的原因,模块之间的功能的分割问题。模块之间应该在功能上有依赖关系,但是!不能有代码build上的依赖关系!(SOA模块之间是用SOAP交通的)
- cons
- distributed architecture is not easy
- Refactoring across service boundaries
- interface changes are challenging: backward compatibility (version)
- Operational challenges
- highly obervable; - Hide implementation; - automation
How to design microServices? Modeled around business domain; decentralize all things;
Conway's law: 管理问题 - 你的技术架构最终会反映出你公司的组织架构。
How to manage configuration; discover service; avoid avalanche;
MicroService不一定要部署在云端。