前言

微服务并不神秘,只是在互联网技术发展过程中的一个产物,整个架构系统随着客户端的多样性,服务越来越多,devops的发展而产生的架构变种。

许多公司,通过采用微处理结构模式解决单体应用的问题,分解的服务之间互相连接提供支持。

每个微服务都是六边形应用,都有自己的业务逻辑和适配器。服务之间通过API互相通信,提供接口供客户端使用。每个实例可能是一个云VM或者是Docker容器。

之前的web应用拆分成一系列简单的服务应用。拆分之后可以对不同用户,不同设备,不同场景进行自行部署。

微服务之间通过REST API或者MQ异步方式通信,供外网使用的API,通过Gateway来传递信息。

微服务的拆分,不像传统多个服务共享一个数据库,微服务架构每个服务都有自己的数据库,每种服务都可以有自己适合的数据库类型。

微服务好处

  1. 分解了单体应用提供多个服务的复杂性问题,拆分之后每个服务都有一个用RPC或是MQ或是API定义的边界。由于传统单体应用没有清晰的边界,存在开发,理解,维护,部署的复杂问题;
  2. 每个服务都可以有单独的团队维护开发,开发者客户选择自己擅长和合适的技术;
  3. 每个服务都可以独立部署,开发者不需要协调因其他服务调用,部署对本服务的影响。加快部署速度,更好的执行AB测试。持续部署变为可能。
  4. 每个服务都可以独立扩展。

微服务不足

  1. 需要考虑和关心更多服务之间调用的问题。
  2. 需要考虑多个服务的编排和依赖关系,包括开发和部署。
  3. 多个服务的配置,部署,扩展,监控。

微服务的特征

  1. 每个服务仅仅对单个业务负责,这个业务也是这个服务的完整容量;
  2. 每个微服务都可以独立部署,不需依赖其他服务的相关资源,如数据库,内存缓存等;
  3. 轻量级的通信协议,如REST,AMQP等;
  4. 服务具有可代替性,每个服务原则上都可以被不同的开发语言,开发框架进行技术实现,替换后不影响原有微服务对外提供的功能;
  5. 每个服务拥有自己独立的数据存储;
  6. 每个微服务由小的团队维护,服务以业务单元进行拆分;
  7. 服务之间可通过组成聚合服务对外提供较粗粒度的服务功能;

微服务名词

  • Gateway:为客户端提供API管理功能,负责负载均衡,缓存,访问控制,API计费监控等任务,可通过Eureka或者NGINX实现;
  • 服务注册于发现模块;
  • 断路器;

微服务选型

  • Dubbo,DubboX(不再维护);
  • Spring Cloud(集成框架);
  • Motan(微博平台);
  • Thrift,gRPC(算不上框架);

本次主要使用Spring Cloud;

基础框架选择 Spring Cloud和Dubbo:

  • Dubbo:

    国内影响力较大,实现了服务治理的基础,但是完成一个完备的微服务架构,还需要在各环节去扩展和完善以保证集群健康,文档较稳定。
  • Spring Cloud:

    国外影响大,社区活跃度领先,将成熟框架融为一体,继承了Spring Boot的简单配置,快速开发,部署轻松特点,更新较快,文档有差异。

日志监控

由Docker通过Syslog日志驱动将日志写入Logstash,参照ELK解决方案。

Devops

使用Docker作为微服务交付标准组件。

集成Docker

通过Consul集成Docker。

Spring Cloud搭建微服务架构----前言的更多相关文章

  1. Spring Cloud搭建微服务架构----文章汇总

    Spring Cloud搭建微服务架构----前言 原文地址:https://my.oschina.net/u/1000241/blog/882929 Spring Cloud搭建微服务架构----使 ...

  2. Spring Cloud构建微服务架构(一)服务注册与发现

    Spring Cloud简介 Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中的配置管理.服务发现.断路器.智能路由.微代理.控制总线.全局锁 ...

  3. 【微服务】使用spring cloud搭建微服务框架,整理学习资料

    写在前面 使用spring cloud搭建微服务框架,是我最近最主要的工作之一,一开始我使用bubbo加zookeeper制作了一个基于dubbo的微服务框架,然后被架构师否了,架构师曰:此物过时.随 ...

  4. 第1章 Spring Cloud 构建微服务架构(一)服务注册与发现

      一.Spring Cloud 简介 Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中的配置管理.服务发现.断路器.智能路由.微代理.控制总 ...

  5. 基于 Spring Cloud 的微服务架构实践指南(上)

    show me the code and talk to me,做的出来更要说的明白 GitHub 项目learnSpringCloud同步收录 我是布尔bl,你的支持是我分享的动力! 一. 引入 上 ...

  6. 基于 Spring Cloud 的微服务架构实践指南(下)

    show me the code and talk to me,做的出来更要说的明白 本文源码,请点击learnSpringCloud 我是布尔bl,你的支持是我分享的动力! 一.引入 上回 基于 S ...

  7. Spring Cloud构建微服务架构(二)服务消费者

    Netflix Ribbon is an Inter Process Communication (IPC) cloud library. Ribbon primarily provides clie ...

  8. Spring Cloud构建微服务架构:服务网关(路由配置)【Dalston版】

    转载:http://blog.didispace.com/spring-cloud-starter-dalston-6-2/ 原创  2017-08-26  翟永超  Spring Cloud 被围观 ...

  9. Cola Cloud 基于 Spring Boot, Spring Cloud 构建微服务架构企业级开发平台

    Cola Cloud 基于 Spring Boot, Spring Cloud 构建微服务架构企业级开发平台: https://gitee.com/leecho/cola-cloud

随机推荐

  1. C#中static void Main(string[] args) 参数详解

    学习C#编程最常见的示例程序是在控制台应用程序中输出Hello World! using System; namespace DemoMainArgs { class Program { static ...

  2. c语言二叉树的递归建立

    #include <stdio.h> #include <string.h> #include <stdlib.h> #include <malloc.h&g ...

  3. 解决VS2015 VBCSCompiler.exe 占用CPU100%的问题

    使用VS2015重复编译运行会发现系统运行缓慢甚至卡死,打开windows任务管理器可以发现CPU已经飙到了100%, VBCSCompiler.exe进程出现多个实例并且占用了大量CPU. 解决方案 ...

  4. js相关小实例——div实现下拉菜单

    代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w ...

  5. LoadRunner如何进行移动端性能测试

    1.录制脚本 1.1 创建脚本:新建一个用户脚本,选择Mobile Application 使用管理员身份打开VirtualUser Generator,点击[文件]->[新建脚本和解决方案], ...

  6. 1677: [Usaco2005 Jan]Sumsets 求和

    1677: [Usaco2005 Jan]Sumsets 求和 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 626  Solved: 348[Submi ...

  7. MVC+Spring.NET+NHibernate .NET SSH框架整合

    在JAVA中,SSH框架可谓是无人不晓,就和.NET中的MVC框架一样普及.作为一个初学者,可以感受到.NET出了MVC框架以后太灵活了(相比之前的web Form),嗯,关于.NET中的MVC框架我 ...

  8. Cesium原理篇:3D Tiles(2)数据结构

    上一节介绍3D Tiles渲染调度的时候,我们提到目前Cesium支持的Cesium3DTileContent目前支持如下类型: Batched3DModel3DTileContent Instanc ...

  9. “Dynamic Web Module 3.0 requires Java 1.6 or newer.”错误 (转别人)

    eclipse maven 在项目的pom.xml的<build></build>标签中加入: <plugins> <plugin> <group ...

  10. Java完成简单猜数字游戏v2.0

    猜数字游戏v2.0 优化了获取随机数.输入数据超出边界值的代码,并增加了异常处理,能够在玩家输入错误数据错误时给出可靠指引,希望对和我一样的新人有帮助, 最后希望有大神愿意帮我解决代码优化的问题,谢谢 ...