微服务
基于微服务去开发一个分布式的项目
1. 什么是微服务?
微服务英文名称 Microservice,Microservice架构模式就是将整个Web应用组织为一系列小的Web服务。这些Web服务可以独立的编译及部署,并通过各自暴露的API接口相互通讯。他们彼此相互协作,作为一个整体为用户提供功能,却可以独立的进行扩展。
2.分布式和微服务的区别
1)分布式是一个概念性的东西,分布式项目就是将项目拆分为多个模块,分不到不同的服务器上
2)微服务也是将一个项目按照模块进行拆分,但是可以部署到同一台服务器上,同一台服务器 端口号不能相同。
3)事实上,我们开发项目进行部署时不会将系统部署到同一台服务器上,我们会使用微服务思想开发项目,分布式进行项目部署。
4)分布式主要强调开发好的项目如何部署,微服务强调项目怎么去拆分和开发
5) 分布式就是将服务部署到不同的节点上,一个服务可能提供多个功能,而微服务相对于分布式来说粒度更细。
6)(重要) 在生产环境(我们项目上线之后运行的环境)中,分布式部署的应用不一定是微服务架构,而微服务架构一定是分布式部署的。
3.微服务架构需要的功能或使用场景
1)我们把整个系统根据业务拆分为几个子系统
2)每个子系统可以部署多个应用,多个应用之间使用负载均衡。
3)需要一个服务注册中心,所有的服务都在注册中心注册,负载均衡也是通过在注册中心注册的服务来使用一定的策略来实现。
4)所有的客户端都通过同一个网关地址访问后台的服务,通过路由器配置,网关来判断一个URL请求由哪个服务处理。请求转发到服务上的时候也是用负载均衡。
5)服务之间有时候也需要相互访问,例如有一个用户模块,其他服务在处理一些业务的时候,要获取用户服务的用户数据。
6) 需要一个断路器,及时处理服务调用事的超时和错误,防止由于其中一个服务的问题而导致整个系统的瘫痪。
7)还需要一个监控功能,监控每个服务调用花费的时间等。
目前主流的微服务框架:Dubbo,SpringCloud等
4.微服务带来的问题
1)服务如何管理
2)服务宕机如何处理
3)负载均衡怎么做
4)服务之间服务调用
5)统一网关怎么实现。
6)怎么路由到指定的服务处理该请求
7)高并发情况下,怎么设置接口限流(想一想汽车限号的问题)
8)…
5.SpringCloud解决问题
首先SpringCloud并不是微服务,我们需要使用SpringCloud去解决微服务框架中的问题,来实现微服务框架。
微服务是一种理论,基于这种理论 我们需要使用具体的技术比如SpringCloud或者Dubbo去实现它,
微服务就相当于一张建筑的图纸,一个想法
SpringCloud就是一个建筑团队,如何去实现微服务,
配置管理(注册中心Eureka,Dobbo的是Zookeeper)、服务发现,服务注册,断路器(非常重要,容错机制,限流,调用接口失败如何解决)、路由策略(接口分发哪台机器上去)、负载均衡、全局锁、分布式会话、客户端调用、接口网关、服务管理系统