微服务的设计原则
软件设计每个版本都在变化,因此软件设计应该是渐进式发展。 软件从一开始就不该该被设计成微服务架构,微服务架构当然有优点,可是它须要更多的资源,包括服务器资源、技术人员等。追求大公司所带来的技术解决方案,刻意地追求某个新技术,企图使用技术解决所 有的问题,这些都是软件设计的误区。服务器
- 在微服务架构中,有三大难题,那就是服务故障的传播性、服务的划分和分布式事务。在 微服务设计时, 必定要考虑清楚这三个难题,从而选择合适的框架。目前比较流行的微服务框 架有 Spring 社区的 Spring Cloud、Google 公司的 Kubemetes 等。无论使用哪种框架或者工具, 都须要考虑这三大难题。 为了解决服务故障的传播性, 通常的微服务框架都有熔断机制组件。 另外,服务的划分没有具体的划分方法, 通常来讲根据业务来划分服务, 领域驱动设计具备指 导做用 。 最后,分布式事务通常的解决办法就是两阶段提交或者三阶段提交,无论使用哪种 都存在事务失败,致使数据不一致的状况,关键时刻还得人工去恢复数据。总之,微服务的设 计必定是渐进式的,而且是随着业务的发展而发展的。
Spring Cloud简介
- Spring Cloud 做为 Java 语言的微服务框架,它依赖于 Spring Boot,有快速开发、持续交付和 容易部署等特色。 Spring Cloud 的组件很是多,涉及微服务的方方面面,井在开源社区 Spring 和 Netflix、 Pivotal 两大公司的推进下愈来愈完善。本章主要介绍 Spring Cloud,将从如下方面来说解。
微服务应该具有的功能。架构
- Spring Cloud 介绍。
- Dubbo 介绍。
- Kubemetes 介绍。
- Spring Cloud 与 Dubbo 比较。
- Spring Cloud 与 Kubemetes 比较。