微服务技术架构详解
2021-12-08 20:49:53 6 举报
中大型互联网项目技术架构详解
作者其他创作
大纲/内容
ELK日志采集监控
监控(Spring Boot Actuator)
TAPD项目管理
注册中心
服务层
AutoTest自动化测试
OAuth2认证授权服务
限流
分库发表
Spring Boot 集群
HTTP(S)
服务统一网关 - Springcloud gateway
采集
聊天服务
SwaggerAPI文档平台
数据治理
Nginx 反向代理
支付服务
配置服务
Redis 缓存
服务注册中心-zookeeper
Mysql主库
基础服务集群
Keepalived监控、 备机切换
Hystrix容错保护
service3
LVS 虚拟负载(Real ip B)(startby)
消费者
硬件集成
Sonar质量审查
集中配置中心-springcloud config
Mysql备库
MongoDB
Feign
Jenkins持续集成
第三方
Zipkin链路追踪
熔断降级(集成Hystrix)
......
缓存数据访问
服务总线spring cloud bus或Mule ESB
Kibana图形展示
wap h5网页
Maven服务构建
数据存储
移动统计小程序分析平台
读写分离
基于RestFull JSON 数据格式 JWT TOKEN管理
服务异常处理
RabbitMQ
数据交换Spring Cloud Data Flow
service2
Kettle、kafka+spark、Streaming
数据访问层
Dubbo内置了4种负载均衡策略: RandomLoadBalance:随机负载均衡。随机的选择一个。是Dubbo的默认负载均衡策略。 RoundRobinLoadBalance:轮询负载均衡。轮询选择一个。 LeastActiveLoadBalance:最少活跃调用数,相同活跃数的随机。活跃数指调用前后计数差。使慢的 Provider 收到更少请求,因为越慢的 Provider 的调用前后计数差会越大。 ConsistentHashLoadBalance:一致性哈希负载均衡。相同参数的请求总是落在同一台机器上。
SVN/git版本管理
K8s服务编排
行为轨迹分析友盟
动态路由(通过Predicates配置)
Metrics/Zabbix指标监控
mybatis 数据持久化
运行环境 tomcat容器
PC端
LVS 虚拟负载(Real ip A)(startup)
文件服务
sqoop、kafka、flume
数据采集
Springboot集群监控
Undertow服务容器
鉴权(Filters)
Spring Cloud Gateway参考:http://www.ityouknow.com/springcloud/2018/12/12/spring-cloud-gateway-start.html https://www.javatt.com/p/10744 基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。其不仅提供统一的路由方式,并且基于 Filter 链的方式提供了网关基本的功能,例如:安全,监控/指标,和限流。相关概念:Route(路由):这是网关的基本构建块。它由一个 ID,一个目标 URI,一组断言和一组过滤器定义。如果断言为真,则路由匹配。Predicate(断言):这是一个 Java 8 的 Predicate。输入类型是一个 ServerWebExchange。我们可以使用它来匹配来自 HTTP 请求的任何内容,例如 headers 或参数。Filter(过滤器):这是org.springframework.cloud.gateway.filter.GatewayFilter的实例,我们可以使用它修改请求和响应。
消息通知服务
任务调度服务
python、R、MapRuduce、Spark、Storm
视频服务
Logstash搜集、分析
主从
service1
网络负载
Hystrix 服务熔断、降级
缓冲服务
业务服务集群
CI/CD
Zabbix分布式系统监控
事务
Docker服务容器
服务监控
数据分析
Ribbon 负载均衡/Dubbo内置了4种负载均衡策略
定时任务Spring Cloud Task
分析数据访问
Hbase大数据存储
服务者
移动端
api管理
消息数据访问
service4
索引数据访问
软件集成
微信/百度/抖音小程序
DNS轮询
服务集群
运营管理
文件存储
浏览器(Vue+Element/iview)
集成平台
网络负载 LB
负载均衡客户端层 -> 反向代理层的负载均衡如何实现?答案是:DNS 的轮询。 DNS 可以通过 A (Address,返回域名指向的 IP 地址)设置多个 IP 地址。比如这里访问 baidu.com 的 DNS 配置了 ip1 和 ip2 。为了反向代理层的高可用,至少会有两条 A 记录。这样冗余的两个 ip 对应的 nginx 服务实例,防止单点故障。每次请求 baidu.com 域名的时候,通过 DNS 轮询,返回对应的 ip 地址,每个 ip 对应的反向代理层的服务实例,也就是 nginx 的外网ip。这样可以做到每一个反向代理层实例得到的请求分配是均衡的。利用域名解析实现负载均衡,在DNS服务器,配置多个A记录,这些A记录对应的服务器构成集群。大型网站总是部分使用DNS解析,作为第一级负载均衡。反向代理层 -> Web 层 的负载均衡如何实现?是通过反向代理层的负载均衡模块处理。比如 nginx 有多种均衡方法:请求轮询。请求按时间顺序,逐一分配到 web 层服务,然后周而复始。如果 web 层服务 down 掉,自动剔除upstream web-server { server ip3; server ip4;}复制代码ip 哈希、weight 权重 、 fair、url_hash 等LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。LVS集群采用IP负载均衡技术和基于内容请求分发技术。调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的、高可用的虚拟服务器。整个服务器集群的结构对客户是透明的,而且无需修改客户端和服务器端的程序。CDN技术Content Delivery Network:内容分发网络该架构负载均衡方案:DNS轮询 + LVS(DR)+ Keepalived + Nginx方案
VPN
搜索服务
展现层
数据统计分析百度统计
Elasticsearch全文搜索
Jmeter压力测试
Android/iOS
关系型数据访问
CDN 网络加速
网站流量分析piwiki/QRadar
ES索引库
营运参数优化seo
墨刀/蓝湖设计共享
非结构化
非关系型数据访问
消息总线RabbitMQ或kafka
0 条评论
下一页