Spring Cloud搭建微服务架构----前言
前言
微服务并不神秘,只是在互联网技术发展过程中的一个产物,整个架构系统随着客户端的多样性,服务越来越多,devops的发展而产生的架构变种。
许多公司,通过采用微处理结构模式解决单体应用的问题,分解的服务之间互相连接提供支持。
每个微服务都是六边形应用,都有自己的业务逻辑和适配器。服务之间通过API互相通信,提供接口供客户端使用。每个实例可能是一个云VM或者是Docker容器。
之前的web应用拆分成一系列简单的服务应用。拆分之后可以对不同用户,不同设备,不同场景进行自行部署。
微服务之间通过REST API或者MQ异步方式通信,供外网使用的API,通过Gateway来传递信息。
微服务的拆分,不像传统多个服务共享一个数据库,微服务架构每个服务都有自己的数据库,每种服务都可以有自己适合的数据库类型。
微服务好处
- 分解了单体应用提供多个服务的复杂性问题,拆分之后每个服务都有一个用RPC或是MQ或是API定义的边界。由于传统单体应用没有清晰的边界,存在开发,理解,维护,部署的复杂问题;
- 每个服务都可以有单独的团队维护开发,开发者客户选择自己擅长和合适的技术;
- 每个服务都可以独立部署,开发者不需要协调因其他服务调用,部署对本服务的影响。加快部署速度,更好的执行AB测试。持续部署变为可能。
- 每个服务都可以独立扩展。
微服务不足
- 需要考虑和关心更多服务之间调用的问题。
- 需要考虑多个服务的编排和依赖关系,包括开发和部署。
- 多个服务的配置,部署,扩展,监控。
微服务的特征
- 每个服务仅仅对单个业务负责,这个业务也是这个服务的完整容量;
- 每个微服务都可以独立部署,不需依赖其他服务的相关资源,如数据库,内存缓存等;
- 轻量级的通信协议,如REST,AMQP等;
- 服务具有可代替性,每个服务原则上都可以被不同的开发语言,开发框架进行技术实现,替换后不影响原有微服务对外提供的功能;
- 每个服务拥有自己独立的数据存储;
- 每个微服务由小的团队维护,服务以业务单元进行拆分;
- 服务之间可通过组成聚合服务对外提供较粗粒度的服务功能;
微服务名词
- 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搭建微服务架构----前言的更多相关文章
- Spring Cloud搭建微服务架构----文章汇总
Spring Cloud搭建微服务架构----前言 原文地址:https://my.oschina.net/u/1000241/blog/882929 Spring Cloud搭建微服务架构----使 ...
- Spring Cloud构建微服务架构(一)服务注册与发现
Spring Cloud简介 Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中的配置管理.服务发现.断路器.智能路由.微代理.控制总线.全局锁 ...
- 【微服务】使用spring cloud搭建微服务框架,整理学习资料
写在前面 使用spring cloud搭建微服务框架,是我最近最主要的工作之一,一开始我使用bubbo加zookeeper制作了一个基于dubbo的微服务框架,然后被架构师否了,架构师曰:此物过时.随 ...
- 第1章 Spring Cloud 构建微服务架构(一)服务注册与发现
一.Spring Cloud 简介 Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中的配置管理.服务发现.断路器.智能路由.微代理.控制总 ...
- 基于 Spring Cloud 的微服务架构实践指南(上)
show me the code and talk to me,做的出来更要说的明白 GitHub 项目learnSpringCloud同步收录 我是布尔bl,你的支持是我分享的动力! 一. 引入 上 ...
- 基于 Spring Cloud 的微服务架构实践指南(下)
show me the code and talk to me,做的出来更要说的明白 本文源码,请点击learnSpringCloud 我是布尔bl,你的支持是我分享的动力! 一.引入 上回 基于 S ...
- Spring Cloud构建微服务架构(二)服务消费者
Netflix Ribbon is an Inter Process Communication (IPC) cloud library. Ribbon primarily provides clie ...
- Spring Cloud构建微服务架构:服务网关(路由配置)【Dalston版】
转载:http://blog.didispace.com/spring-cloud-starter-dalston-6-2/ 原创 2017-08-26 翟永超 Spring Cloud 被围观 ...
- Cola Cloud 基于 Spring Boot, Spring Cloud 构建微服务架构企业级开发平台
Cola Cloud 基于 Spring Boot, Spring Cloud 构建微服务架构企业级开发平台: https://gitee.com/leecho/cola-cloud
随机推荐
- Android--带你一点点封装项目 MVP+BaseActivity+Retrofit+Dagger+RxJava(三)
1,这一篇博客是和大家一起来封装我们最后的Dagger2,其实之前也写过关于简单的Dagger2,这里是地址,完全没了解的同学可以先去看一下这篇,感谢很多小伙伴一直在耐心的等待这一篇 2,Dagger ...
- Selenium 基本操作--元素定位
对页面元素进行操作 1. 输入框输入 driver.findElement(By.id("id号")).sendKeys(“输入框输入内容”): 例:
- Java Web(十四) 编写MyBookStore项目的总结
这几天一直没有发博文,原因是在写一个书城的小项目,作为web学习的最后沉淀,接下来就要到框架的学习了. --WH 一.项目介绍 从网上找的一个培训机构的小项目,名称叫做 书城购物网站 吧,其中就是分前 ...
- Bulls and Cows leetcode
You are playing the following Bulls and Cows game with your friend: You write down a number and ask ...
- Compare Version Numbers leetcode
Compare two version numbers version1 and version2.If version1 > version2 return 1, if version1 &l ...
- 每天一个Linux命令 4
Linux系统关机命令 shutdown -h 时间 init 0 poweroff Linux系统注销命令 logout 或者是快捷键 Ctrl+d Linux系统重启命令 reboot Linux ...
- 深入理解java虚拟机之——JVM垃圾回收策略总结
如何判断一个对象是否存活 引用计数算法:给对象中添加一个引用计数器,每当有引用它时,计数器值就加1:当引用失效时,计数器值就减1:任何时刻计数器为0的对象就是不可能再被使用. Java虚拟机里面没有 ...
- sed 删除换行符
sed 删除换行符 sed ':label;N;s/\n/:/;b label' filename sed ':label;N;s/\n/:/;t label' filename 上面的两条命令可以实 ...
- Yii2.0修改默认控制器
设置默认控制器有两种方法 1.在/vendor/yiisoft/yii2/web/Application.PHP的第28行左右 public $defaultRoute = 'site'; ...
- 不可重入定时器Newlife.TimerX
在.net常用的定时器类有下面三种,使用定时器时需要设定参数,如间断时间.定时器计溢出后的回调函数.延时.开始等,定时器的的主要方法有开始.终止等,不同的定时器实现上述的方法会有一些差异,本文会针对具 ...