什么是软件架构?
软件架构是在软件的内部,经过综合各种因素的考量、权衡,选择特定的技术,将系统划分成不同的部分并使这些部分相互分工,彼此协作,为用户提供需要的价值。
MVC
解决了代码的调用杂乱无章,通过在各层之间定义接口,接口和实现隔离。
Dubbo
前端和后端 物理隔离、分布维护
什么是单一架构
功能、业务集中在一个发布包里,部署运行在同一个进程中的应用。
优势:易于开发,易于测试,易于部署,易于水平伸缩
面临的挑战:代码膨胀,难以维护。构建,部署成本大。可扩展性差。
微服务架构的不足
额外的工作(服务的拆分,领域驱动设计)、数据一致性、沟通成本
微服务架构引入的问题及解决方案
微服务之间如何通讯?
从通讯模式角度考虑:
一对一 | 一对多 | |
---|---|---|
同步 | 请求响应模式 | --------- |
异步 | 通知/请求异步响应 | 发布订阅/发布异步响应 |
微服务之间如何发现彼此?
微服务怎么样部署?更新?扩容?
服务编排
服务发现,服务部署,服务更新,服务扩容
Mesos、Swarm、Kubernetes