微服务学习之微服务概述

一、微服务:

将一个完整的单体应用拆分成不同的服务,每个服务可以单独的开发、部署、扩展。每个单独的微服务之间用网络通信协议进行通信。实现高内聚,低耦合。便于后期的维护。

三、微服务好处:

微服务一般是根据业务划分的,更加符合单一职责原理,更好的避免了业务逻辑的高耦合,由于每个服务是单独部署的所以可以很快的发现系统瓶颈,解决性能问题。

四、微服务目前存在的问题:

1,微服务是是相当于传统单体服务而言的,那么,如何拆分微服务是我们面临的一个大问题,如何把控微服务拆分的粒度也是一个很大的难题。

2,在微服务的开发过程中协调沟通增加了难度,在单体应用中所有的代码都在一个应用中开发人员可以很快的发现已经存在的接口和公共代码并加以重复使用。但是在微服务中由于每个服务都是单独部署的,有可能都是不同的人员、团队开发,有可能重复开发已经存在的接口,重复业务逻辑加大了系统的复杂度。和后期维护难度维护成本。

3、微服务拆分后部署产生了难度。拆分微服务后传统的人工部署已经不再实用,自动化部署、监控、运维迫在眉睫对运维人员的能力要求大大提高。

4、由于微服务是分布式部署的所以如何管理微服务、如何减少网络延迟,提高微服务间的调用效率是不可避免的一个难题。

5、微服务独立运行,在数据共享、分布式事务控制、并发协同方面也是非常困难的。

6、单体系统的服务鉴权很容易实现,但是在微服务中系统权限控制鉴别也变的不易了。

7、部署的服务多了自然成本也就上去了,对于一些小型企业也就不太实用了。

五、微服务目前主流的一些框架、技术

微服务条目  落地技术

服务开发 SpringBoot,Spring,SpringMVC

服务配置与管理  Netflix公司的Archaius、阿里的Diamond等

服务注册与发现 Eureka、Consul、Zookeeper等

服务调用 Rest、RPC、gRPC  

服务熔断器   Hystrix、Envoy等

负载均衡 Ribbon、Nginx等 

服务接口调用   Feign等

消息队列   Kafka、RabbitMQ、ActiveMQ等   

服务配置中心管理   SpringCloudConfig、Chef等  

 服务路由 (API网关 Zuul等      

 服务监控     Zabbix、Nagios、Metrics、Specatator等

全链路追踪     Zipkin、Brave、Dapper等

  服务部署   Docker、OpenStack、Kubernetes等

数据流操作开发包 SpringCloud Stream(封装与Redis,Rabbit,Kafka等发送接收消息)

事件消息总线  SpringCloud Bus 

微服务中SpringCloud与Dubbo的区别

Dubbo Spring

服务注册中心 Zookeeper Spring Cloud Netfilx Eureka

服务调用方式 RPC  REST API 

服务监控 Dubbo-monitor Spring Boot Admin 

断路器 不完善  Spring Cloud Netflix Hystrix

服务网关  无  Spring Cloud Netflix Zuul

分布式配置  无  Spring Cloud Config

服务跟踪  无  Spring Cloud Sleuth

消息总线  无  Spring Cloud Bus 

数据流  无  Spring Cloud Stream

批量任务  无  Spring Cloud Task

六、微服务的技术要点

微服务的构建

微服务的治理

微服务的服务注册

微服务的服务发现

客户端负载均衡策略

接口调用

熔断机制

全局配置

网关控制

微服务的全全局监控

微服务的权限控制鉴权

猜你喜欢

转载自blog.csdn.net/sunshine4214/article/details/88076741
今日推荐