SpringCloud微服务概念
SpringCloud 框架是本系统采用的主要框架, 它是一个集合式的架构,其中包含SpringMVC、 MyBaties 等在内的优秀架构设计模型。该框架基于 SpringBoot 架构,巧妙地对分布式系统开发的组件进行了简化与整合[20]。 继承于 SpringBoot 自动实现快速启动与部署的方式, Spring Cloud 中的服务注册部分、消息总线处理部分、负载均衡部分以及数据监控部分都能实现便捷地管控,同时对繁琐枯燥的文件配置进行屏蔽处理,提供给开发人员操作简单、维护方便的开发工具集合包 。
微服务架构的优势
作为一种优秀的架构风格,微服务实现了对业务庞大复杂的大型应用的微服务化解放。传统模式下的软件开发模块耦合会让系统处于一种“牵一发而动全身”的状态中,而微服务实现了模块独立部署、模块松耦合等的灵活开发[21]。独立的微服务作为一个单元,只需要关注与此服务相关的业务处理,而不用考虑太多的调用和关联操作。微服务具有以下特征。
(1)独立部署性
在系统中,每一个微服务都具有独立的开发和部署环境,如果系统中某一处需要修改,只需要对此部分涉及到的服务进行重启和配置,而不需要牵动所有的服务模块,这对调试和测试都有很好的技术支撑。生产环境造成的突发状况带来的风险进一步降低,上线发布流程也能实现并行处理,整个开发工作的周期安排会更加灵活。
(2)复杂度可控性
在微服务架构中,每一个独立的服务都不会有功能的复杂交叉,而是独自集中于一类功能,服务之间通过接口界定边界,这样一来,传统模式下复杂的集成式应用被合理划分,且每一个服务都复杂度低、体积微小,这对模块移植和维护有着良好的扩展[22]。
(3)技术灵活性
微服务架构的使用,为团队技术支持也提供了较好的便利。 当服务被划分成不同部分时,每一部分都独立由一个团队进行开发,团队可以根据团队成员对技术的使用情况和开发环境灵活地选择使用的技术栈[23]。使用数据库的时候也可以根据使用情况选择不同类型的,这对团队分工有着很好的鼓励,也提高了开发效率,缩短开发周期。
(4)容错性
传统的单体架构,在开发过程中,如果出现问题,需要逐一检查全局环境与代码,故障会导致整个项目的进展阻塞。使用微服务架构以后,调试和排除将会进行空间隔离,每一个服务使用自己的环境运行,问题的定位与发现也更加方便,也有利于模块进程追踪。
(5)扩展性
在单一进行应用项目中,扩展指的是把项目移植到不同的平台,实现整个结构的完全扩展[24]。如果单体中,部分组件需要实现功能的改进或者剔除,整个系统则需要付出一定代价,微服务中则不然,每一个服务表示一个功能,功能扩展具有独立性,对于后期维护有重要意义 。
Feign组件
Feign 是 SpringCloud 架构中,用于服务消费端的基本调用架构,一般会和 Hystrix、Ribbon 等组合在一起使用。作为声明 Web 服务的客户端, Feign 在 web 客户端编写方面提供了便利,可以使用 Feign 进行接口创建,之后进行注解。在注释支持上,它可具有可插拔的特性,其中包括 JAX-RS 注解与 Feign 注解[26]。另外, SpringCloud 增加了对于SpringMVC 进行支持的功能。
技术选型SpringCloud
Spring Cloud 是一系列框架的合集, 它降低了分布式系统的开发成本,提供了微服务架构模型下的多种工具的支持,包括服务治理、断路器、配置中心等, 基于 Spring Cloud可以方便的构建微服务架构的应用。
使用 Spring Cloud 可以用于实施微服务架构的保险核心系统的改造,微服务架构是宏观的架构模式,将微服务架构落地实施则可依赖于 Spring Cloud 的开源组件及技术实施方案。
微服务架构概述
近些年在软件开发领域中出现了一种架构风格——微服务架构, 它是一种实现低耦合、可扩展、易维护以及快速部署的软件架构。微服务可以追溯到 2010 年,当时硅谷软件工程师提出了微服务的想法,但是当时的计算机技术还不够成熟,无法有效地推广这种架构。真正使微服务引起关注的是 Martin Fowler, 2014 年他在同名网站上发布了微服务的文章,详细介绍了微服务体系结构的基本思想、体系结构特征和未来微服务体系结构模式的预测。
微服务的基本思想是将传统的单个应用程序划分为多个软件服务单元,这些单元可以根据各自的业务功能独立设计、开发、部署和运行, 最终的价值是通过服务与服务之间的配合和协作实现的。 面向服务是微服务的核心思想, 微服务分解了传统大型应用系统的功能,将服务划分为细粒度。微服务体系结构是将单个应用的服务层划分为多个微服务, 并利用 API网关作为客户端和微服务之间的桥梁,其中每个微服务都对应一个独立的数据库,它可以使用多种数据库,也可以使用多种开发语言, 有效地降低了服务端的耦合性,提高系统的整体性能,一个基本的微服务架构如图 2.1 所示。