什么是为服务?
首先,微服务不等于 Spring Cloud,所谓微服务就是做分布式架构的一种,所谓分布式架构就是把服务做拆分,拆分的过程会产生各种各样的问题,springCloud只是解决了服务拆分时的服务治理问题
微服务做拆分的时候,会把一个单体的项目,拆分成许多个业务独立的项目,每个项目完成一部分独立的义务功能,将来独立开发和部署,每个独立的项目我们称之为 “服务”,一个大型互联网项目可能会包含数百上千个服务,最终形成服务集群
而一个业务往往也需要多个服务共同来完成,随着业务越来,业务关系也就越来越复杂,想靠人来管理是不可能的;所以在微服务里,一定会有一个组件,叫做注册中心
注册中心:它可以去记录微服务中每一个服务的 ip+端口,以及它能干什么事,当有一个服务A需要去调用另一个服务B时,服务A不需要自己去记录服务B的信息,只需要去找注册中心就可以了,从注册中心去拉取对应服务B的信息
同时,随着服务越来越多,每个服务都有自己的配置文件,将来如果要更改配置文件,不用逐一去修改,所以在微服务里还有一个配置中心
配置中心:它可以统一的去管理整个服务集群里成千上百的这些配置,如果以后有些配置需要变更,只需要找到配置中心就可以了,它会去通知相关的服务,实现配置的热更新
服务起来以后,用户就可以去访问了,但是这么多服务,用户怎么知道去访问哪一个呢?而且也不是什么人都可以来访问我们的服务!就像法院,肯定有看站岗的哨兵,不能什么人来了都让进。所以,在微服务里还有一个网关组件。比如说A来了,哨兵问你找谁?A说找马冬梅。
网关组件:一方面可以做对身份的校验,另一方面,可以把我们的请求路由到我们的某个具体服务,路由的过程中可以做一些(负载均衡),此时,服务接收到请求就去处理业务,该访问数据库的时候就去访问数据库,最后再把查询到的数据返回给前段就ok了
如果有问题记录日志,还添加了分布式日志服务
如果服务越来越多,成百上千等,如果还用人工去部署显然不合理了,也不现实
自动化部署:这一套称之为持续集成
- 利用Jenkins技术实现自动化编译
- 基于docker实现打包形成镜像
- 再基于k8s这样的技术,去实现自动化的部署
所以:微服务技术栈 = 微服务这些技术 + 持续集成
微服务技术栈
- spring Cloud :微服务治理
- MQ:异步通信
- Redis:缓存
- ES-搜索
- 持续集成
知识层次