微服务概念这两年已经火遍大江南了,但在实际的开发和使用中,用到的仍是挺少的,尤为对创业团队来讲。前端
在上一个产品中,咱们也在把传统的开发模式,不断往「微服务」方向靠拢。但终究仍是处于学习阶段。最近偶然发现有人推荐《架构探险 轻量级微服务架构》上下册这两本书,简单的看了看目录后,以为使用到的技术,有些已经在开发过程当中用到过,有些可能会在将来的某一阶段会使用到。java
也本着「多看书,多学习」的原则,果断入手了这两本书。昨天到手后,用了一夜的时间,粗略看完了第一本书,今天火烧眉毛的想按照书中的脉络和技术栈,边学习边动手,搭建简易的「轻量级微服务架构」。web
预计分红好几篇读书摘要来分享读书心得spring
微服务是一种分布式系统架构,它建议咱们将业务划分为更加细粒度的服务,并使每一个服务的责任单一且可独立部署,服务内部高内聚,隐含内部细节,服务之间低耦合,彼此相互隔离。此外,咱们根据面向服务的业务领域来建模,对外提供统一的 API 接口。微服务的思想不仅是停留在开发阶段,它贯穿于设计、开发、测试、部署、运维等软件生命周期阶段。
引用于《架构探险》数据库
微服务知足如下几点要求:apache
· 根据业务模块划分服务种类;
· 每一个服务可独立部署且相互隔离;
· 经过轻量级 API 调用服务;
· 服务需保证良好的高可用性。浏览器
引用于《架构探险》bash
当知足于微服务架构,所带来的好处无外乎如下几点:服务器
1. 每一个微服务组件都是简单灵活的,可以独立部署。再也不像之前同样,应用须要一个庞大的应用服务器来支撑,并且前端、后台、数据库什么的都整合在一块儿;架构
2. 每一个微服务组件,均可以由更小的团队,或者第三方平台来负责开发,或者提供,让全部人更专一专业,提供更高效可靠的服务。
3. 微服务之间是松耦合的,微服务内部是高内聚的,每一个微服务均可以根据自身提供的服务进行有针对性的扩展。
4. 微服务架构与语言工具无关,自由选择合适的语言和工具,尤为对于小团队来讲,若是其中一组 PHP 开发人员忙于其它业务开发,彻底能够由另外一组 Java 开发人员来开发。
这本书主要利用一些主流的开发框架和工具来搭建微服务架构:
1. 微服务开发框架 —— Spring Boot 框架
2. 微服务网关 —— Node.js
3. 微服务注册与发现 —— ZooKeeper
4. 微服务封装 —— Docker
5. 微服务部署 —— Jenkins, GitLab
关于开发 IDE,我是推荐 jetbrains (www.jetbrains.com/) 家族系列的,如 Java 使用 IntelliJ IDEA,如 前端开发使用 WebStorm, PHP 开发使用 PhPStorm 等。
在使用 IntelliJ IDEA 以前,咱们须要加入 Maven 国内镜像来加块插件等的下载速度:
在 settings.xml 文件中加入阿里云镜像路径:
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd">
<mirrors>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
</settings>复制代码
在 IntelliJ IDEA 中若是没有 Spring Boot 开发脚手架,能够直接搜索插件安装:
初始化 Spring Boot 应用:
项目的整个目录结构以下:
正如书上所说:
1. 在类中带有 @SpringBootApplication,代表它是个 Spring Boot 应用;
2. 类中包含有 main()函数,经过 SpringApplication.run(Demo1Application.class, args);来运行该类。
3. 加入简单的一个 Hello 接口,直接上代码:
package com.yemeishu.demo1;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
@RestController
@SpringBootApplication
public class Demo1Application {
public static void main(String[] args) {
SpringApplication.run(Demo1Application.class, args);
}
@RequestMapping(method = RequestMethod.GET, path = "/hello")
public String hello () {
return "你好 叶梅树";
}
}复制代码
如今能够直接点「运行」了,输出一堆 Log:
在浏览器输入网址:http://localhost:8080/hello,便可看到结果:
能够看出 Spring Boot 仍是比较容易上手的,接下来继续学习 Spring Boot 和微服务相关的功能开发。
明天继续,coding01 期待您继续关注
也很感谢您能看到这了