微服务架构设计案例分析- 陆金所网站

news/2024/5/16 14:04:22/文章来源:https://blog.csdn.net/OliverZang/article/details/83990643

前言:本文引用自https://www.cnblogs.com/Leo_wl/p/4917489.html 微服务架构设计案例

1. 架构的选择

小项目:传统的单体应用,将所有功能的表示层、业务逻辑层,数据访问层,包括静态资源等等全部糅合在一个工程里面,编译,打包,部署在单台服务器上上线,比如打成war包放在Tomcat的webapp目录中部署项目。

大项目:微服务架构:就是将原来的单体应用按义务范围来进行划分,划分为多个小model,每个微服务运行在自己的进程中,不相互影响,通过完全自动化部署来独立部署。并使用轻量级机制通信,通常是HTTP RESTUFUL API。可对各个微服务进行集中管理。这些小model可以使用不同的编程语言,以及不同的存储技术。微服务架构是分布式架构。

2. 架构设计文档

需求分析
系统分析
逻辑架构
开发架构
运行架构
物理架构

例如开发金融网站https://www.lu.com/

1)需求分析


需求分析表-陆金所
分类功能质量约束
前端用户首页产品展示及时响应、搜索引擎优化
上证指数显示及时响应、搜索引擎优化实时同步上证指数
.....
前端用户会员中心账户总览及时响应,安全性
充值、取现及时响应,安全性
.....
前端用户会员俱乐部活动类玩法及时响应、搜索引擎优化目前包括:刮刮乐、抽奖、竞猜、竞拍
.....
后端运维不同产品的发布管理及时响应,可扩展性
.....

2). 系统分析

按需求结合企业的运营目标,提供宏观的系统要求分析
例如陆金会上线5年后,预估系统运营状况:
产品更替:更新,上架新的金融产品(期货,现货交易)
注册人数:3000万
年营业额:1000亿
网站访问数量:3000万PV
产品购买并发:1000 QPS

分类需求子系统及服务实现技术
用户前端首页及其它产品展示、产品搜索、促销活动、推荐服务 平台商品服务集群部署、高速缓存、分布式缓存、搜索引擎技术、静态化
广告图片、公告、帮助中心、媒体报道、常见问题
投资某产品平台会员服务集群部署、消息队列、实时计算
.....

如上所述,要支持运营目标的陆金所平台,可以分为大小十几个服务和子系统。系统划分的依据一方面是职责,一方面跟实现技术有关,同一职责下实现技术不同会被划分为两个服务,比如购买商品和商品展示原本属于同一个大的领域,但其因为实现技术和质量要求不同需要划分为两个模块。这是因为微服务和传统SOA最大的区别就是技术实现的个性化,只有个性化才能做好做专,并节省成本。另外根据系统分析,我们需要将第三方调用的地方抽取为服务,比如支付,将这些第三方调用抽取为一个单独的服务首先也是基于职责考虑,其次是基于稳定性考虑,因为调用第三方的东西通常存在很大的不稳定性,当某一厂商提供的API不能用时,我们的系统需要自动切换到可用的API。用户购买产品产生订单相关数据,订单数据关系到商品和用户两方面,如果是超高并发的系统,用户购买行为需要单独的服务,但限于互联网金融的特殊性-不会在同一时刻产生大量交易,我们将订单服务合并到用户账户服务,因为从数据角度来讲,订单属于每一个用户。

3) 逻辑架构

在这里插入图片描述十几个子系统分别分布在服务层、服务监控与治理、表现层。实体层和接口访问层虽然属于“层”,但它们并不单独发布,而是使用Jar包类库的方式提供给其它服务调用,是逻辑上的层。业务服务模块具有模块化,构件化的特点,并可以以各种不同的协议发布服务,包括SOAP、RMI、REST、JMS等。

4)开发架构

在这里插入图片描述所需公共模块工程:
在这里插入图片描述
开发环境:

编码:UTF-8

工具:Myeclipse 10

SVN:Site-1.8.22

注释插件:Jautodoc_1.8.0

Web服务器:Tomcat7

JDK: JDK1.7、 Java EE 5

开发环境:Maven 3

开发技术选型:

表现层:Bootstrap+Html+Jquery

MVC框架:Spring MVC 3.2

安全框架:Spring security 3.2

Rest接口实现:Spring MVC Rest

持久层:Mybatis3.2

缓存框架:Ehcache 2.6、Redis

日志管理:SLF4J 1.7、Log4j

数据库:MySql 5.5

5)运行架构

此架构设计视图的关注点是控制流组织。运行架构考虑一些非功能性的需求,如性能和可用性。它解决并发性、分布性、系统完整性、容错性的问题,以及逻辑视图的主要抽象如何与进程结构相配合在一起-即在哪个控制线程上,对象的操作被实际执行。
在这里插入图片描述主要控制流包括:

l 页面访问控制流

由前端浏览器发起请求,部分请求首先会到缓存里查询,如果缓存里有结果则返回,如果没有缓存内容,则继续请求web服务器。也有部分无需缓存的请求直接访问web服务器获取数据。

l 日志采集

操作日志采集有两条控制流。一条是页面的采集js,直接将用户请求发送至日志采集接口,由日志采集接口提交给消息队列,再由日志采集模块从消息队列里获取数据并保存。另外一条是在web服务器层面拦截访问请求并提交给消息队列,并由日志采集模块获取和处理。

l 自动对账

由接口访问层拦截需要记账的操作,并转换成记账凭证提交到消息队列,由自动对账模块从消息队列中获取数据并保存。自动对账功能是由定时任务触发,由自动对账服务按规则进行对账计算,如果需要预警则产生预警数据。

l 手机APP访问

由手机app发起,部分请求首先会到缓存里查询,如果缓存里有结果则返回,如果没有缓存内容,则继续请求web服务器。也有部分无需缓存的请求直接访问web服务器获取数据。

l 运维管理

由浏览器发起请求,考虑到并发情况并不是很大,可不经过缓存服务器,直接与web服务器运维服务交互。

6)物理架构

此架构设计视图的关注点是物理节点(Node)分布,以及软件到硬件的具体映射关系。
在这里插入图片描述主要关键技术:

l 负载均衡

1)采用负载均衡器来实现硬件级的四层交换负载均衡,或采用LVS来实现软件的四层交换负载均衡。并通过nginx实现反向代理服务器集群。

  1. 使用zookeeper实现业务服务的负载均衡。

l 缓存

1)系统使用Varnish 集群以作为静态页面和图片的高速缓存。

2)使用Redis集群作为业务层的高速缓存,Redis具有高并发、高可用等特性。

l 文件存储

鉴于平台文件存储业务并不复杂,通过NFS实现文件存储集群。

l 消息队列

系统使用高并发、高稳定性消息队列rabbitmq实现异步消息处理。

l Docker集群

系统采用最新的虚拟机技术docker作为服务集群发布的载体。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_882299.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LAMP架构部署和动态网站环境的配置

实验环境: 操作系统:centos 7.5 服务器IP:192.168.10.5 运行用户:root 连接工具:xshell工具 web环境:Linuxapachephpmariadb(LAMP架构) 大型动态应用系统平台主要是针对于大流量…

Linux中什么是动态网站环境及如何部署

当谈论起网站时,我们可能听说过静态和动态这两个词,但却不知道它们的含义,或者从字面意思了解一些却不知道它们的区别。 这一切可以追溯到网站和网络应用程序,Web应用程序是一个网站,但很多网站不是Web应用程序&#x…

IIS建站

这两天在工作中接触到了在xp系统下使用IIS、SQL2005、.net-frameworkv3.5架设网站工作。 遇到一些下问题,大概总结以下: 1、安装IIS 2、安装Microsoft .NET Framework 3.5 3、安装sql2005(安装图解:http://www.xue5.com/itedu/200707/119546.html) 如果遇到“SQ…

大学生学完python靠几个接单网站兼职,就实现了经济独立

说点想说的 程序员就是当今时代的手艺人,程序员可以通过个人的技术来谋生。而在工作之余接私单可以作为一种创富的途径,受到程序员的广泛认可。说句实在话,现在这个时代,很多人仅靠主业顶多维持基本生活,想让自己、家…

Python学习,不容错过的七本书籍和6个网站,免费分享

随着人工智能的到来,python编程语言一步登天冲到编程排行榜第一名,因此更多朋友想转行学习python编程语言的朋友,可以一起看一下:Python学习,不容错过的七本书籍和6个网站! 入门书籍 1、《零基础入门学习…

发布网站到码云giee/用网址打开网页

准备工作: 首先需要下载git软件 Git (git-scm.com) giee没有账号的需要注册账号 https://gitee.com/ 进入网页 创建仓库 方法一: 利用git上传 创建完这里会有教程 设置开源 找到自己的文件根目录。 在自己的文件根目录下右键Git Bash Here,!…

分享代码的添加|网站中怎么添加分享|分享代码的样式添加|分享工具的添加|网站中怎么添加分享工具...

请参考网站:http://www.jiathis.com/share (所有的分享,可以自动生成代码,超简单的) 介绍和使用: 分享代码的添加|网站中怎么添加分享|分享代码的样式添加|分享工具的添加|网站中怎么添加分享工具 2011-…

网创CEO网站名称的来历

开始做这个网站的时候,不知道搞什么域名好记,反正是关于到网络创业,资源这块,就开始往这方面靠,想了很多什么【wnagluo】相关的拼音字母结合的,但是感觉太长了,又不想太难记,于是就想…

外部可以访问WAMP 搭建的网站及数据库

网站修改: 配置文件:点击右下角的WAMP服务器小托盘,选择Apache>httpd.conf 搜索关键字 "deny from ",会发现一处 "denyfrom"下有一行"Allow from 127.0.0.1" ,然后将127.0.0.1修改为…

网站电话图片采集的插件及使用

网站上的电话是图片生成的。 需要利用插件进行采集。有图有真相 接着配置采集规则 绑定采集插件 这样测试一个单页 最后导出结果 很暴力吧。嘿。

64位调试ASP网站经常修改参数

安装ASP的功能插件 可以参考:https://docs.microsoft.com/zh-cn/iis/application-frameworks/running-classic-asp-applications-on-iis-7-and-iis-8/classic-asp-not-installed-by-default-on-iis#installing-classic-asp-on-windows-8-or-windows-81 核心是在控…

阿里云新服务器迁移 IIS类网站

IIS类网站: 1:本地调试成功 首先增加功能,安装IIS,允许ASP,ASPX等 配置IIS允许父目录,允许暴露500详细信息 做到这步本地调度:http://127.0.0.1:8013 比如已经调试成功 2:修改解析DNS:&…

mysql 迁移 PHP网站报错SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #1 of SELECT list

更换了MYSQL 服务器,结果报错:SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #1 of SELECT list is not in GROUP 原因: MySQL 5.7.5和up实现了对功能依赖的检测。如果启用了only_full_group_by SQL模式(在默认情况下是这样)&…

2011 年 20 个最棒的免费 HTML5 网站模板

前几天,笔者在 Inside Forum 上面放了一个意见调查表,叫做「你的第一台计算机」,也是借此题看一下 PC 跟 Mac 这几年来,到底实际战况有多激烈。是的,某一方如意料中的被狂电(如上图)&#xff0c…

25 个精美的手机网站模板

现如今,iPhone 横行,Android 满天飞,WP7 蓄势待发的势态下,网站没有个手机版都好像很 out 一般。 于是本文向你推荐 25 个制作精美的手机网站模板,提供模板下载以及在线演示,你值得拥有。 Dossier Mobi Sti…

23款精美的HTML5网站模板免费下载

站长之家(CHINAZ.com)1月11日编译:HTML 5作为最新的HTML版本,被认为是Adobe Flash的强大竞争对手,HTML 5的发布无疑给网页设计师和开发者为创建更丰富的应用敞开了大门。在本文中,就将为设计师和开发者们分…

为什么海外服务器打开网站会卡呢?

本文编辑:富哥 海外服务器服务器都是不需要备案的。不同地区的服务器都有它们自己的特点。不过经常有站长反馈外国服务器网站打开慢,那出现网站访问慢的原因有哪些呢? 距离因素导致的速度慢    服务器与网站访客的距离对访问速度有非常大的影响&…

注意这三点有效的提高网站的访问速度。

本文编辑:富哥 当今社会,互联网高度发展,如何在信息化时代里留有一席之地则显得尤为重要,服务器托管的应运而生无疑将会更高效的使资源利用起来,这是时代发展的需求,也是社会进步的体现,为了能…

网站服务器可以使用独立服务器吗?独立服务器优势

本文编辑:富哥 在创建网站时,有很多方法可以来存储你的网站,包括共享服务器、虚拟独立服务器、云服务器、独立服务器等。如果您不确定哪一个最适合您,那么在做出决策时可能会让你无从下手。很多人都不了解他们之间的区别&#xf…

你有多久没有看星星了呢?【爬取NASA的科普网站上的所有图片】

1. 前景提要 在网上冲浪的时候看到原来NASA航天局有科普网站,每天一张科普图片,而且是非常高清的那种,很想下载下来做壁纸。 所以打算写一个Java爬虫爬取所有的图片,也可以加入一些通知,每天晚上进行检查&#xff0c…