1、SpringBootSpringBoot的设计目的是简化新Spring应用初始搭建以及开发过程,2017年有4%的受访者决定使用SpringBoot,可以说是受欢迎的烂缺微服务开发框架。
2、利用SpringBoot开发的便捷度简化分布式系统基础设施的开发,比如像配置中心、注册、负载均衡等方面都可以做到一键启动和一键部署。
3、SpringCloudSpringCloud是一个系列框架的合计,基于HTTP(s)的RETS服务构建服务体系,SpringCloud能够帮助架构师构建一整套完整的微服务架构技术生态链。
4、DubboDubbo是由阿里巴巴开源的分布式服务化治理框架,通过RPC请求方消皮式访问。
5、Dubbo是在阿里巴巴的电商平台中逐渐探索演进所形成的,经历过复杂业务的高并发挑战,比SpringCloud的开源时间还要早。
6、目前阿里、京东、当当、携程、去哪等一些企业都在使用Dubbo。
7、DropwizardDropwizard将Java生态系统中各个问题域里好的组建集成于一身,能够快速打造一个Rest风格的后台,还可以整合Dropwizard核心以外的项目。
8、国内现在使用Dropwizard还很少,资源也不多,但是与SpringBoot相比,Dropwizard在轻量化上更有优势,同时如果用过Spring,那么基本也会使用SpringBoot。
9、AkkaAkka是一个用Scala编写的库,可以用在有简化编写容错、高可伸缩性的Java和Scala的Actor模型,使用Akka能够实现微服务集群。
10、Vert.x/Lagom/ReactiveX/Spring5这四种框架主要用于响应式微服务开发,响应式本身和微服务没有关系,更多用于提升性能上,但是可以和微服务相结合,也可以提升性能。
11、.Net相关微服务框架.NETCore.NETCore是专门针对模块化微服务架构设计的,是跨平台应用程序开发框架,是微软开发的第一个官拿历差方版本。
12、ServiceFabricServiceFabric是微软开发的一个微服务框架,基于ServiceFabric构建的很多云服务被用在了Azure上。
13、SurgingSurging是基于RPC协议的分布式微服务技术框架,基于.NETCore而来。
14、MicrodotFrameworkMicrodotFramework用于编写定义服务逻辑代码,不需要解决开发分布式系统的挑战,能够很方便的进行MicrosoftOrleans集成。
15、。
二、什么是 微服务1、SpringBootSpringBoot的设计目的是简化新Spring应用初始搭建以及开发过程,2017年有4%的受访者决定使用SpringBoot,可以说是受欢迎的烂缺微服务开发框架。
三、Java 如何快速部署一个微服务1、第一步之前已经探讨了如何快速创建springboot的项目,可以参考下面的地址,主要是修改pom.xml文件,之前引用了spring-boot-starter,这里因为是要创建restFul接口,所以需要引用spring-boot-starter-web。
2、第二步当然在做web服务的时候,日志重要,lombok提供了优良的日志服务,这里引入lombok依赖的jar包。
3、第三步之前创建了一个springboot项目,这里需要在项目中增加程序的入口,也就是main方法Application。
4、第四步创建好了程序的入口后,这里创建一个接口,返回字符串,“restFul接口返回1111111”,@RequestMapping("/")表示拦截根目录的请求。
5、第五步测试运行,启动项目,点击runas--javaapplication,然后检查日志,是否启动成功。
四、SpringCloud实战开发系列课程(3)创建部门微服务1、所谓的微服务的核心本质就是JSON的传输,那么既然现在要求使用MyBatis进行数据库操作,所以应该在项目里面配置Druid数据库连接池,而后对外进行项目的发布。修改父pom.xml配置文件,追加相关的依赖程序支持包。 microcloud com.gwolf 0 0.0 com.gwolf microcloud-provider-dept-8001 jar microcloud-provider-dept-8001 http://maven.apache.org UTF-8 junit junit test com.gwolf microcloud-api mysql mysql-connector-java com.alibaba druid org.mybatis.spring.boot mybatis-spring-boot-starter ch.qos.logback logback-core org.springframework.boot spring-boot-starter-jetty org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-test test org.springframework springloaded org.springframework.boot spring-boot-devtools org.springframework.boot spring-boot-starter-security 。
2、【microcloud-provider-dept-8001】创建一个IDeptDAO数据接口,这个接口里面将提供三个数据操作方法。@MapperpublicinterfaceIDeptDAO{ public booleandoCreate(Deptvo); publicDeptfindById(Longid); publicListfindAll();}。
3、【microcloud-provider-dept-8001】修改application.yml配置文件,追加mybatis和服务的相关配置信息。新建application.yml配置文件,增加mybatis连接数据库支持配置:server: port:8001mybatis: config-location:classpath:mybatis/mybatis.cfg.xml #mybatis配置文件所在路径 type-aliases-package:com.gwolf.vo #定义所有操作类的别名所在包 mapper-locations: #所有的mapper映射文件 -classpath:mybatis/mapper/**/*.xmlspring: datasource: type:com.alibaba.druid.pool.DruidDataSource #配置当前要使用的数据源的操作类型 driver-class-name:com.mysql.cj.jdbc.Driver #配置MySQL的驱动程序类 url:jdbc:mysql://localhost:3306/mldn_1?serverTimezone=UTC #数据库连接地址 username:root #数据库用户名 password:root #数据库连接密码 dbcp2: #进行数据库连接池的配置 min-idle:5 #数据库连接池的小维持连接数 initial-size:5 #初始化提供的连接数 max-total:5 #大的连接数 max-wait-millis:200 #等待连接获取的大超时时间 application: name:microcloud-provider-deptsecurity: user: name:gwolf #用户名 password:gwolf #密码 role: #授权角色 -USER。
4、【microcloud-provider-dept-8001】定义的src/main/resources/mybatis/mybatis.cfg.xml配置文件:。
5、【microcloud-provider-dept-8001】修改src/main/resources/mybatis/mapper/com/gwolf/Dept.xml配置文件SELECTdeptno,dname,locFROMdeptWHEREdeptno=#{deptno};SELECTdeptno,dname,locFROMdept;INSERTINTOdept(dname,loc)VALUES(#{dname},database()); 。
6、【microcloud-provider-dept-8001】建立IDeptService接口做业务实现。publicinterfaceIDeptService{ publicDeptget(longid); publicbooleanadd(Deptdept); publicListlist();}。
7、【microcloud-provider-dept-8001】建立IDeptServiceImpl接口做业务实现。@ServicepublicclassDeptServiceImplimplementsIDeptService{ @Resource privateIDeptDAOdeptDAO; @Override publicDeptget(longid){ returnthis.deptDAO.findById(id); } @Override publicbooleanadd(Deptdept){ returnthis.deptDAO.doCreate(dept); } @Override publicListlist(){ returnthis.deptDAO.findAll(); }}。
8、【microcloud-provider-dept-8001】添加项目启动类。@SpringBootApplicationpublicclassDept_8001_StartSpringCloudApplication{ publicstaticvoid main(String[]args){ SpringApplication.run(Dept_8001_StartSpringCloudApplication.class,args); }}。
9、【microcloud-provider-dept-8001】进行业务接口测试编写。packagecom.gwolf.microcloud.service;importcom.gwolf.microcloud.Dept_8001_StartSpringCloudApplication;importcom.gwolf.vo.Dept;importorg.junit.Test;importorg.junit.runner.RunWith;importorg.springframework.boot.test.context.SpringBootTest;importorg.springframework.test.context.junitSpringJUnit4ClassRunner;importorg.springframework.test.context.web.WebAppConfiguration;importjavax.annotation.Resource;/** *Package:com.gwolf.microcloud.service *Description:TODO *Author: *Date:Createdin2017-11-1212:00 *Company: *Copyright:Copyright(c)2017 *Version:0.0.1 *ModifiedBy: */@SpringBootTest(classes=Dept_8001_StartSpringCloudApplication.class)@RunWith(SpringJUnit4ClassRunner.class)@WebAppConfigurationpublicclassIDeptServiceTest{ @Resource privateIDeptServicedeptService; @Test publicvoidtestGet(){ System.out.println(this.deptService.get(1)); } @Test publicvoidtestAdd(){ Deptdept=newDept(); dept.setDname("测试部-"+System.currentTimeMillis()); System.out.println(this.deptService.add(dept)); } @Test publicvoidtestList(){ System.out.println(this.deptService.list()); }}。
10、【microcloud-provider-dept-8001】建立DeptRest服务类:@RestControllerpublicclassDeptRest{ @Resource privateIDeptServicedeptService; @RequestMapping(value="/dept/get/{id}",method=RequestMethod.GET) publicObjectget(@PathVariable("id")longid){ returnthis.deptService.get(id); } @RequestMapping(value="/dept/add",method=RequestMethod.POST) publicObjectadd(@RequestBodyDeptdept){ returnthis.deptService.add(dept); } @RequestMapping(value="/dept/list",method=RequestMethod.GET) publicObjectlist(){ returnthis.deptService.list(); }}。
11、启动程序主类Dept8001_StartSpringCloudApplication。
12、修改hosts配置文件,追加一个映射路径:0.1dept-800com。
13、观察Rest服务能够正常提供:调用get操作:http://dept-800com:8001/dept/get/3调用list操作:调用add操作:。
14、调用成功。
五、微服务开发流程1、1) JDK:8 Springboot0要求JDK0支持;JDK0拥有方便的语言特性,比如泛型、Annotation、枚举、新日期和自动拆箱装箱等; 。
2、1) springCloud框架:Finchley.RELEASE微服务架构;整合nacos0.1版本指定的cloud版本要求通过一些简单的注解,我们就可以快速的在应用中配置一下常用模块并构建庞大的分布式系统。。
3、1) springboot框架:0.RELEASE 简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置; 自动配置Spring;没有代码生成并且对XML也没有配置要求;创建独立的Spring应用程序整合nacos0.1版本指定的boot版本要求。
4、1) 持久层框架:Mybatis-plus简单、容易上手;相对于Hibernate,通过手工编写SQL语句,更容易实现程序性能调优;相对于JDBC,可以将SQL语句与Java代码分离,便于维护与重用;Mybatis-Plus是Mybatis的增强版,他只是在Mybatis的基础上增加了功能,且并未对原有功能进行任何的改动。
5、1) 网关:zuulzuul是netflix开源的一个APIGateway服务器,本质上是一个webservlet应用Zuul是提供动态路由,安全等边缘服务的框架。。
6、1) 服务发现框架:nacosNacos支持基于DNS和基于RPC的服务发现(可以作为springcloud的注册中心)、动态配置服务(可以做配置中心)、动态DNS服务 提供了一组简单易用的特性集,帮助您实现动态服务发现、服务配置管理。
7、1) RESTfulAPI文档:Swagger2一款让你更好的书写API文档的规范且完整框架提供描述、生产、消费和可视化RESTfulWebService由庞大工具集合支撑的形式化规范。