## **微服务的定义**
一种软件开发技术- 面向服务的体系结构(SOA)架构样式的一种变体,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务于服务间采用轻量级的通信机制互相沟通(通常是基于HTTP的RESTful API)。每个服务都围绕着具体业务进行构建,并且能够独立地部署到生产环境、类生产环境等。另外,应尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据上下文,选着合适的语言、工具对其进行构建。
![](https://img.kancloud.cn/cb/a5/cba5c811cde839812a157686f3f282d3_640x430.png)
## **一个完整的微服务系统,最少要包含以下功能:**
日志和审计,主要是日志的汇总,分类和查询
监控和告警,主要是监控每个服务的状态,必要时产生告警
消息总线,轻量级的MQ或HTTP
注册发现
负载均衡
自动化部署和升级
时间调度机制
资源管理,如:底层的虚拟机,物理机和网络管理
**其它功能:**
认证和鉴权
微服务统一代码框架,支持多种编程语言
统一服务构建和打包
统一服务测试
微服务CI/CD流水线
服务依赖关系管理
统一问题跟踪调试框架,俗称调用链
灰度发布
蓝绿部署
## **技术选型:**
学习推荐地址:https://blog.csdn.net/karlin999/article/details/79277609
![](https://img.kancloud.cn/da/a3/daa3f5ad36e509394383bbbd146642c7_1200x885.png)
**微服务条目------------------落地技术**
服务开发---------------------Spring、SpringMVC、SpringBoot
服务配置与管理------------Netflix公司Archaius、阿里Diamond等
服务注册和发现------------Eureka、Consul、Zookeeper
服务调用---------------------RPC、gRPC、Rest
服务熔断---------------------Hystrix、Envoy
负载均衡---------------------Nginx、Ribbon
服务接口调用---------------Feign
消息队列---------------------ActiveMQ、RabbitMQ、Kafka
服务配置中心管理---------SpringClodeConfig、Chef等
服务路由---------------------Zuul
服务监控---------------------Zabbix、Nagios、Metrics、Spectator
全链路追踪------------------Zipkin、Brave、Dapper
数据流操作开发包---------SpringCloud Stream(封装与Redis\Rabbit、Kafka等发送接受消息)
服务部署---------------------Dockers、OpenStack、Kubernetes等
事件消息总线---------------Spring Cloud Bus