一、什么是微服务,为什么使用微服务
微服务就是将一个整体的功能拆分成一个个小的功能,互不影响让开发人员实现并行开发
在一些大型项目中,使用微服务能够解决提交代码冲突的问题,可以不用一次性交付项目,可以提升团队效率
二、微服务的好处
独立:
在开发层面,每一个微服务都是一个独立的项目,对应各自独立项目的研发团队也是独立对应,并行开发
微服务交付期间也是各自独立交付的,大大加快了微服务的迭代和交付效率
运行期间,微服务的部署也是独立的
微服务可扩展性强,可以快速地添加服务集群的实例,提升整个微服务集群的服务能力
进程(Process)拥有天然的隔离特性,一个 WAR 包只部署运行在一个 Web 容器进程中是最好的隔离方式
多语言生态:
要将互通性作为首要考虑因素,应该尽量统一微服务的服务接口和协议,让服务的访问者可以用统一的接口访问所有这些用不同语言开发和交互的微服务
三、微服务会带来哪些挑战
服务“微”化之后,一个显著的特点就是服务的数量增多了,多语言生态虽然灵活度高了,但是成本也增加了
适度的收缩语言生态的选择范围,并围绕主要的语言生态构建一套标准化的微服务交付体系,或许是更为合理的做法
要实施高效可重复的标准化微服务生产,要有类似传统行业生产线的基础设施
完备的微服务研发和交付体系《基础设施建设》就成为了实施微服务的终极挑战
四、Spring IoC
Spring IoC 容器的依赖注入工作可以分为两个阶段:
(1)收集和注册
第一个阶段可以认为是构建和收集 bean 定义的阶段,在这个阶段中,我们可以通过 XML 或者 Java 代码的方式定义一些 bean,然后通过手动组装或者让容器基于某些机制自动扫描的形式,将这些 bean 定义收集到 IoC 容器中
以 XML 配置的形式来收集并注册单一 bean
<bean id="mockService" class="..MockServiceImpl"> ...</bean>
批量地收集并注册到 IoC 容器中,通过 XML Schema 形式的配置进行批量扫描并采集和注册
<context:component-scan base-package="com.keevol">