===================Happy Start!!!===================
市面上很流行微服务架构这东西,所以我对这块也比较感兴趣。去年到今年一直就在做这块的东西。现在闲下来整理下心得体会。记录一个从零到初实践的学习历程。
2018年3月份的时候接到个任务就是搭建一个微服务中台,其实一开始我只是只到有个框架叫spring cloud,其他啥都不清楚。后面Google一下之后大概有个模糊的认知,就是有种无从下手的赶脚,后面通过了解还有去看别人写的项目对这东西有了个较为清晰的认知,其实在我感觉微服务更多是一种概念性的东西。你要做这个东西首先你需要只到微服务系统到底需要由什么组件来组成,最基础你最起码需要知道业务服务、注册中心、网关这几个概念。
首先说说架构组织图
大致是这样的,注册中心首先不考虑集群。所有的应用都需要去注册中心注册,然后外部请求先经过鉴权网关(zuul)进行的身份认证(Token认证)认证成功之后,请求根据url(eg:api/user;api/product;api/order)进行解析,分发到对应的应用网关,应用网关则根据业务需求通过feign接口去找到对应需要调用的服务接口。大致思路是这样的。相比于dubbo,其中有个比较麻烦的东西。就是每个服务都需要暴露rest接口,供应用网关调用,所以服务需要对service层的同时,还需要将service的请求接口暴露。然后Gateway我的理解就是我们传统springMvc或者springBoot的Controller。这就是一个最基本的微服务应用一个实现。观念局限于我个人的理解。
鉴权网关这玩意我用的zuul,应用网关就是一个不同工程。包结构只有controller、feign、fallback这三块。然后eureka随便百度一篇都可以成功搭建。最后服务层的话包结构为service、serviceImpl、rest这三块。另外还有一些比如mybatis的配置之类的这些我放到公用模块去实现了。
===================line===================
配置eureka有几个要注意的地方。贴一下代码。这个做的是集群配置。
首先创建个eureka工程,用idea new个project,里面有的选择Spring Initializr然后会弹出一个组件选择 找到eurekaserver勾选就完事了。
yml的配置。application.yml、application-7001.yml、application-7002.yml
接着是springApplication.java(重点也就是上面几个标签,另外因为我使用了spring-security做eureka的登陆验证所以需要加上crsf的配置,这玩意需要关闭,具体原因搜百度)
写完这几个东西基本就eureka就构建完成了。起两站点7001&7002
===================line===================
接着我就是构建服务站点-service-product。
相同的创建方式,选择eureka-client这个选项,这是帮你导入相关的包。
yml配置下eureka的注册信息。然后springApplication.java加上@EnableDiscoveryClient注解
然后随便写个接口和RestController。测试下能否调用。可以调用之后这块就算ok了。
===================line===================
再然后我们可以是创建的gateway工程,这个工程引入feign、hystrix组件。然后写个暴露给鉴权网关的接口
通过定义的feign做一个对service-product的调用
启动应用网关,调用这个接口你就可以调用接口q去访问你服务啦。
这样的一个最简单的微服务应用就搞定啦。(鉴权网关我没写)
===================Happy Ending!!!===================