开发者学堂课程【5天突破 Spring Cloud:开发订单微服务与注册调用】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/781/detail/13701
开发订单微服务与注册调用
2、把 Spring Cloud 微服务 API 发布到注册中心配置文件参数的好处在于配置完以后能否告诉服务器地址。其他一些控制参数严格来说如果写入原始Java代码后可以继续配置,但这种注册方式是标准化的,加进的依赖会自动扩展这些代码并读取参数,然后去实现服务接口信息的争议。注入中心提供的客服依赖就是帮助进行改造升级的。
3、注册中心查看微服务信息
我们用之前的项目进行改造,也可以完全从头开始写入。
先写入一个订单接口,订单接口可以返回一个订单对象,订单类型完成实例化对象并可以赋值,正式项目可能有几十个赋值内容,比如金额、订单备注、手机号、邮箱等信息。
新建一个JavaSpringClood02OrderServiceDemo订单服务,加入开发工具,方便调试。
把连数据库加入后,还缺少Eureka,Spring Cloud现在已经是一个大平台、一个生态体系了,最早它只是一个工具类库。
添加引用完以后进行下一步骤,因为第一个项目创建需要的时间比较长,第二个项目就不需要很久了,向里面注册可以照着订单来完成,订单类可以自己进行写入,然后加上order类就可以了。下面进行配置,配置也可以通过快捷键复制粘贴完成并进行修改,代码为:
spring .application. Name=Orderserviceserver
Service.port-8001
eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka
控制注册中心的参数
eureka.client.fetch-registry-false
eureka.client .register-with-eureka=true
OrderService表示订单的微服务,本机测试两个程序的端口不能重复,eureka.client .register-with-eureka=true,表示向注册中心注册,需要打开;而eureka.client.fetch-registry-false参数需要关闭,true是一个布尔值,表示真假值中的真,注释时如果出现乱码是因为格式不正确,右键更改属性。
微服务用的端口是8001,启动后返回订单,注入中心加入的是eureka的server,应用的是其客户端,客户端完成和注册中心联系的工作。
启动之前需要先把注册中心写好,注册中心的程序运行好之后再运行订单的微服务,具体代码为:
@SpringBootApplication
public class JavaSpringcloudo20rderServiceDemoApplication {
public static void main(String[] args){
SpringApplication.run(JavaSpringCloud020rderServiceDemoApplication.class}
刷新后可以看到相比于之前多了服务层,显示目前有多少人注册了,再次点击刷新后观察注册中心,本机地址后有订单服务,其中status中的up表示程序正在运行,服务名称全部大写并且要具有意义,可以体现出评论、order订单、user用户、快递、配置、支付等微服务,需要注意的是服务名称不要重复,重复容易冲突,服务名称是作为唯一标识出现的。
微服务运行起来后,进行集群的模拟,现在只有一台服务器但是可以模拟两台,如果将微服务稍作改动,例如修改包名改为Model,demo控制器可以改为API,即我们所讲的接口,package com.alibaba是这个是启动程序所在的目录,简单来说可以将目录缩短一级,后续要进行反射、注入等一系列操作。
显示红线不需要慌张,找出问题所在即可,轻触红线显示import,表示需要导入某个包的类。
基本结构已经搭建完毕,后续可以根据需要添加其他类型,比如有接口后可以增添业务逻辑业务,为大家进行简单的演示,Java中业务逻辑层叫做service它的名称可以任意取,主要目的是给大家模拟几个包,数据访问层是访问数据库的,用户逻辑层是补充逻辑的,API层是对外的接口,供客户端像APP、H5网页小程序用。
注入中心中有两个订单服务,这两个服务的代码完全一模一样,唯一不一样的地方在于为了方便在同一台机器调试,第一个服务的端口是8001,第二个端口改成8002,有两台服务器不更改端口也可以,即两台服务器上的端口都是8001。
重新启动一下注册中心刷新查看,对服务器的数量没有限制,现在是为了给大家演示同一台机器上模拟两台服务接口的集群。
刷新页面重新启动后信息丢失,刚刚显示的一台服务不在了,重新启动一遍,将服务一运行起来,大家可以进行扩展,把简单的订单服务和买家数据连接,让其可以从MySQL数据库里实现简单的订单查询等功能,真正和MySQL数据库进行对接,整个项目可以不断的优化。
刷新后显示微服务一已经启动了,我们可以再启动一台,微服务二其实跟他是一样的,因为服务名都是订单,所以再次运行时理论上不会报错,注册过程是一样的,再刷新页面后列表里有两台服务,分别是8001和8002对两台机器,且运行状态正常,显示为up。
得出结论是同一个订单服务可以有两台,也可以有三台,甚至是300台都可以,大型互联网公司、电商平台里面,一旦用户数量增多,机器需要立刻增加,从前期的两台可能变成200台甚至2000台。
这些互联网公司内部有很多孵化项目,抖音用户目前达到了几亿,他的服务器逐渐趋于庞大,其他公司早期也有一些程序的功能并不完善,最终没有延续,像快闪,后期并不会继续投入更多的服务器数量,因为使用感不强,用户数量也不多,但是不排除前期分配10台或者100台服务器,如果后期真正被广泛应用,用户达到了微信的级别10亿级别,他的服务器数量也有可能达到上万台。整个技术是慢慢扩充的,实现弹性扩充,哪种服务的压力大,就给哪个服务增加服务器。
在上述所讲的基础上可以对微服务进行改造,链接上MySQL数据库,不仅仅实现订单的简单查询。
三、结语
接下来的课程会讲调用,调用技术提供了方便,可以和注入中心相联系,寻找正常的服务并完成调用,调用的底层实际应用的是去重对象,后面还会讲解一些底层优化的技巧,大家可以提前思考一下。了解作为客户端进行注册时几个重要的底层源码,知道他们完成的工作的原理。
思考题
设计改造微服务链接MySQL;查看源码,如何注册微服务到Eureka的,即如何将微服务注册进去的,注册的一简单信息是服务地址、服务的名字、服务的状态是否正常、服务接口接入了什么参数,源码的了解仅作为一个提升点。