跟着《架构探险》学轻量级微服务架构 (一)

代码隐修院
• 阅读 3951

跟着《架构探险》学轻量级微服务架构 (一)

微服务概念这两年已经火遍大江南了,但在实际的开发和使用中,用到的还是挺少的,尤其对创业团队来说。

在上一个产品中,我们也在把传统的开发模式,不断往「微服务」方向靠拢。但终究还是处于学习阶段。最近偶然发现有人推荐《架构探险 轻量级微服务架构》上下册这两本书,简单的看了看目录后,觉得使用到的技术,有些已经在开发过程中用到过,有些可能会在未来的某一阶段会使用到。

也本着「多看书,多学习」的原则,果断入手了这两本书。昨天到手后,用了一晚上的时间,粗略看完了第一本书,今天迫不及待的想按照书中的脉络和技术栈,边学习边动手,搭建简易的「轻量级微服务架构」。

预计分成好几篇读书摘要来分享读书心得

微服务

微服务是一种分布式系统架构,它建议我们将业务划分为更加细粒度的服务,并使每个服务的责任单一且可独立部署,服务内部高内聚,隐含内部细节,服务之间低耦合,彼此相互隔离。此外,我们根据面向服务的业务领域来建模,对外提供统一的 API 接口。微服务的思想不只是停留在开发阶段,它贯穿于设计、开发、测试、部署、运维等软件生命周期阶段。
引用于《架构探险》

优点

微服务满足以下几点要求:

· 根据业务模块划分服务种类;
· 每个服务可独立部署且相互隔离;
· 通过轻量级 API 调用服务;
· 服务需保证良好的高可用性。

引用于《架构探险》

当满足于微服务架构,所带来的好处无外乎以下几点:

1. 每个微服务组件都是简单灵活的,能够独立部署。不再像以前一样,应用需要一个庞大的应用服务器来支撑,而且前端、后台、数据库什么的都整合在一起;

2. 每个微服务组件,都可以由更小的团队,或者第三方平台来负责开发,或者提供,让所有人更专注专业,提供更高效可靠的服务。

3. 微服务之间是松耦合的,微服务内部是高内聚的,每个微服务都可以根据自身提供的服务进行有针对性的扩展。

4. 微服务架构与语言工具无关,自由选择合适的语言和工具,尤其对于小团队来说,如果其中一组 PHP 开发人员忙于其它业务开发,完全可以由另一组 Java 开发人员来开发。

微服务核心技术

这本书主要利用一些主流的开发框架和工具来搭建微服务架构:

1. 微服务开发框架 —— Spring Boot 框架
2. 微服务网关 —— Node.js
3. 微服务注册与发现 —— ZooKeeper
4. 微服务封装 —— Docker
5. 微服务部署 —— Jenkins, GitLab

写代码

微服务开发框架 —— Spring Boot 框架

关于开发 IDE,我是推荐 jetbrains (https://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 期待您继续关注

跟着《架构探险》学轻量级微服务架构 (一)


也很感谢您能看到这了

跟着《架构探险》学轻量级微服务架构 (一)

点赞
收藏
评论区
推荐文章
徐小夕 徐小夕
4年前
微前端架构初探以及我的前端技术盘点
前言最近几年微前端一直是前端界的热门议题,它类似于微服务架构,主要面向于浏览器端,能将一个复杂而庞大的单体应用拆分为多个功能模块清晰且独立的子应用,且共同服于务同一个主应用。各个子应用可以独立运行、独立开发和独立部署。微前端架构概念的诞生及应用对于提供复杂应用服务的企业来说显然是一种机遇,同样也是一种挑战.本文主要就微前端架构的概念和实现方案做一
Easter79 Easter79
3年前
springboot的maven多模块项目架构微服务搭建——构建多模块项目(依赖方式)
  总想对微服务架构做一个小小的总结,不知如何下手,最近觉得还是从搭建微服务的过程来入手,对于springboot的maven项目从构建多模块架构进而衍化为常用的微服务架构来做个记录吧。  首先,创建多个springboot项目,项目结构如图:      !(https://img2018.cnblogs.com/blog/1305004/201
Wesley13 Wesley13
3年前
vivo 全球商城:从 0 到 1 代销业务的融合之路
代销是vivo商城已经落地的成熟业务,本文提供给各位读者vivo商城代销业务中两个异构系统业务融合的对接经验和架构思路。一、业务背景近两年,内销商城业务的发展十分迅速,vivo商城系统的架构也完成了从单体往分布式的演进。我们在vivo商城服务化方向做了很多的努力,基础服务的能力逐渐沉淀下来。2019年我们也开始在产品功
Easter79 Easter79
3年前
SpringCloud(一):SpringCould 框架预览
前言 SpringCloud是基于SpringBoot的一整套实现微服务的框架。他提供了微服务开发所需的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等组件。最重要的是跟springboot框架一起使用的话,会让你开发微服务架构的云服务非常好的方便。 SpringBoot旨在
Stella981 Stella981
3年前
MoChat企业微信开源系统,让开发者快速搭建基于企业微信的私域流量运营系统
“经过行业的实战应用,企业微信已经成为”私域流量“运营的主要工具”尽管现在基于企业微信开发的第三方产品处于一个百家争鸣的时代,但仍旧未能看到一个开源的、真正为企业微信应用开发服务铺路的框架&引擎,此为Mo.Chat开源框架及其团队成员的初衷,做市场上最好用的开源企业微信应用开发框架。Mo.Chat开源框架提供开箱即用的企业微信管理工具,源代码1
Stella981 Stella981
3年前
Spring Cloud与微服务构建:Spring Cloud简介
SpringCloud简介<fontsize4微服务因该具备的功能</font微服务可以拆分为"微"和"服务"二字。"微"即小的意思,那到底多小才算"微"呢?可能不同的团队有不同的答案。从参与微服务的人数来讲,单个微服务从架构设计、代码开发、测试、运维人数加起来是8~10人才算"微"。那么何为"服务"呢?按照"微服务"概念
Stella981 Stella981
3年前
Docker+Kubernetes(k8s)微服务容器化实战视频教程
第1章初识微服务微服务的入门,我们从传统的单体架构入手,看看在什么样的环境和需求下一步步走到微服务的,然后再具体了解一下什么才是微服务,让大家对微服务的概念有深入的理解。然后我们一起画一个微服务的架构图,再从架构上去分析微服务架构的优势和不足。...第2章微服务带来的问题及解决方案分析通过传统服务与微服务对比的方式去学习,
Stella981 Stella981
3年前
DevOps 视角的前后端分离与实战
本文作者:CODING廖红坤前言随着微前端、微服务等技术理念和架构的蓬勃发展,我们已经没必要去讨论为什么要前后端分离这种话题,前后端分离已成为互联网项目开发的标准模式。前后端在各自的领域发展越来越纵深。!1(https://static.oschina.net/uploads/img/202011/03155102_VGNk.
Stella981 Stella981
3年前
SpringBoot入门(简单详细教程)
SpringBoot简介  简化Spring应用开发的一个框架;整个Spring技术栈的一个大整合;J2EE开发的一站式解决方案;微服务  martinfowler;微服务:架构风格(服务微化);一个应用应该是一组小型服务;可以通过HTTP的方式进行互通;单体应用:ALLINONE;微服务:每一个功
Easter79 Easter79
3年前
SpringBoot入门(简单详细教程)
SpringBoot简介  简化Spring应用开发的一个框架;整个Spring技术栈的一个大整合;J2EE开发的一站式解决方案;微服务  martinfowler;微服务:架构风格(服务微化);一个应用应该是一组小型服务;可以通过HTTP的方式进行互通;单体应用:ALLINONE;微服务:每一个功