一、什么是微服务?

1.微服务是一种架构模式或者一种架构风格。

2.微服务提倡将单一应用程序划分成一组小的服务并且独立部署

3.微服务之间相互配合、相互协调,每个服务运行在其独立的进程中。

4. 服务与服务间采用轻量级通讯,通常是基于HTTP的RESTful API等。

 

二、 微服务优点:

1. 微服务所需开发团队小,一般2-5人就可以(当然还是以实际需求为主)

2. 系统中的各个微服务可被独立部署,各个微服务之间是松耦合的

3. 微服务技术栈不受限,可以使用多种语言开发。

4. 每个服务足够内聚,足够小,比较容易聚焦

5. 开发简单且效率高,一个服务只做一件事情

6. 易于和第三方集成,微服务允许容易且灵活的自动集成部署(持续集成工具有docker Jenkins,Hudson,bamboo等)

7 微服务只是涉及业务逻辑的代码,不会和前端页面进行融合

8. 每个微服务都可以有自己的存储能力,数据库可自有也可以统一,十分灵活

三、微服务缺点:

1. 分布式的复杂性

2. 运维要求较高

3. 依赖系统部署

4. 接口之间调整成本高

5. 微服务需要数据的一致性(分布式事务)

微服务与springcloud

微服务架构

二、什么是springcloud?

Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包

SpringCloud基于SpringBoot提供了一整套微服务的解决方案,包括服务注册与发现,配置中心,全链路监控,服务网关,负载均衡,熔断器等组件,除了基于Netflix的开源组件做高度抽象封装之外,还有一些选型中立的开源组件

SpringCloud利用SpringBoot的开发便利性巧妙地简化了分布式系统的基础设施开发,SpringCloud为开发人员提供了快速构建分布式系统的一些工具,包括配置管理、服务发现、断路器、路由、微代理、事件总线,全局所、决策精选、分布式会话等等,他们都可以用SpringBoot的开发风格做到一键启动和部署。

总结:SpringCloud是分布式微服务架构下的一站式解决方案,是各个微服务架构落地技术的几何体,俗称微服务全家桶。

springcloud 微服务

三、springcloud核心功能

1.Eureka:注册中心。

Eureka是一个基于REST的服务,用于定位服务,以实现云端中间层服务发现和故障转移。

Eureka主管服务注册与发现,在微服务中,以后了这两者,只需要使用服务的标识符(==就是那个在每个服务的yml文件中取得服务名称==),就可以访问到服务,不需要修改服务调用的配置文件

Eureka遵循AP原则(高可用,分区容错性),因为使用了自我保护机制所以保证了高可用。

2.Ribbon:负载均衡框架。Load Balance,微服务或分布式集群中常用的一种应用

一句话:简单来说负载均衡就是将用户的请求ping平摊的分配到多个任务上,从而实现系统的高可用。

3.Hystrix:容错框架,通过添加延迟阀值以及容错的逻辑,来帮助我们控制分布式系统间组件的交互。

Hystrix是一个用于处理分布式系统延迟和容错的开源库。分布式系统中,依赖避免不了调用失败,比如超时,异常等。Hystrix能保证在出现问题的时候,不会导致整体服务失败,避免级联故障,以提高分布式系统的弹性。

Hystrix类似一个“断路器”,当系统中异常发生时,断路器给调用返回一个符合预期的,可处理的FallBack,这样就可以避免长时间无响应或抛出异常,使故障不能再系统中蔓延,造成雪崩。

4.Feign:一个REST客户端,目的是为了简化Web Service客户端的开发

Feign是一个声明式WebService客户端,使用方法时定义一个接口并在上面添加注解即可。Feign支持可拔插式的编码器和解码器。Spring Cloud对Feign进行了封装,使其支持SpringMVC和HttpMessageConverters。Feign可以与Eureka和Ribbon组合使用以支持负载均衡。

5.Zuul:为微服务集群提供过代理、过滤、路由等功能。

6. Config:分布式配置中心组件,支持配置服务放在配置服务的内存中(即本地),也支持放在远程Git、SVN。

相关文章: