【系统架构师】-案例篇(十五)SOA、微服务与数据库

1、可复用构件应具备哪些属性

可用性:构件必须易于理解和使用。

质量:构件及其变形必须能正确工作。

适应性:构件应该易于通过参数化等方式在不同语境中进行配置。

可移植性:构件应能在不同的硬件运行平台和软件环境中工作。

可变性(Variability):构件应能针对不同的应用系统,只需对其可变部分进行适当的调节等

2、王工:客户端——web服务器——数据库服务器;

李工:客户端——web服务器——多应用服务器-数据库服务器

3、O/RM的含义及优点

O/R映射指的是对象/关系映射,是一种编程技术,将关系数据库中的关系型数据与面向对象编程语言中类型系统定义的 数据进行格式转换。

三点好处:

(1)可以将业务逻辑与数据逻辑分离。

(2)可以使得开发人员采用面向对象的方式访问底层关系型数据库。

(3)能够做到上层应用与底层的具体数据库无关,两者解耦合。

4、影响Web应用系统性能的三个主要因素:

(1)数据库的连接与销毁。可以采用数据池的方式缓存数据库连接,实现数据库连接复用,提高系统的数据访问效率。

(2)构件或中间件的加载与卸载。可以采用分布式对象池的方式缓存创建开销大的对象,实现对象复用,用以提高效率。

(3)线程的创建与销毁。可以采用线程池的方式缓存己经创建的线程,提高系统的反应速度。

提高数据访问性能

5、传统分层架构与SOA架构区别

6、基于SOA的企业集成中的“数据整合——信息服务”

(1)联邦服务(Federation,Service):提供将各种类型的数据聚合的能力,它既支持关系型数据,也支持XML数据、文本数据和内容数据等非关系型数据。同时,所有的数据仍然按照自己本身的方式管理。

(2)复制服务(Replication,Service):提供远程数据的本地访问能力,它通过自动的实时复制和数据转换,在本地维护一个数据源的副本。本地数据和数据源在技术实现上可以是独立的。

(3)转换服务(Transformation,Service):用于数据源格式到目标格式的转换,可以是批量的或者是基于记录的。

(4)搜索服务(Search,Service):提供对企业数据的查询和检索服务,既支持数据库等结构化数据,也支持如PDF等非结构化数据。, 

7、SOA架构设计的注意事项

当基于SOA来构建一个企业级的系统架构时,一定要注意对原有系统架构中的集成需求进行细致的分析和整理。而关于系统中最重要的元素,也就是SOA系统中服务的构建有两点需要特别注意的地方:

①是对于服务粒度的控制;

②是对于无状态服务的设计。

8、针对每条SQL语句都建立索引的不合理原因:

①如果建立索引不当,数据库管理系统将不利用已经建立的索引,而采取全表扫描。

②当更新操作成为系统瓶颈时,因为每次更新操作会重建表的索引,则需要考虑删除某些索引。

③应该针对不同应用情况选择适当的索引类型。例如,如果经常使用范围查询,则B树索引比散列索引更加高效。

④应该将有利于大多数据查询和更新的索引设为聚类索引。

⑤需要对建立的索引进行实际的测试,因为索引的使用是由数据库管理系统(数据库优化器)决定的。

9、SQL优化的基本策略:

①建立物化视图或尽可能减少多表查询。

②以不相干子查询替代相干子查询。

③只检索需要的列。

④用带IN的条件子句等价替换OR子句。

⑤经常提交COMMIT,以尽早释放锁。

⑥避免嵌套的游标(Cursor)和多重循环等

10、微服务的优缺点

微服务优点:

(1)每个微服务都很小,这样能聚焦一个指定的业务功能或业务需求。

(2)微服务能够被小团队单独开发,这个小团队是2到5人的开发人员组成。

(3)微服务是松耦合的,是有功能意义的服务,无论是在开发阶段或部署阶段都是独立的。

(4)微服务能使用不同的语言开发。

(5)去中心化。每个微服务都有自己的存储能力,可以有自己的数据库。也可以有统一数据库。

 微服务缺点:

(1)很难在不采用分布式事务的情况下跨服务实现功能

(2)测试工作更加困难

(3)跨服务实现要求功能要求团队之间的紧密协作

(4)部署复杂

微服务架构的涵义和关键原则

微服务是一种软件开发技术,是面向服务的体系结构(SOA)架构风格的一种变体。微服务将应用程序构造为一组松散耦合的服务,微服务中单个应用程序由许多松散耦合且可独立部署的较小组件或服务组成。

微服务风格的关键原则:

1. 每一个 URI 代表 1 种资源

2. 客户端使用 HTTP Web 表示操作方式的动词对服务端资源进行操作

3. 通过操作资源的表现形式来操作资源

4. 资源的表现形式是 XML 或者 HTML

5. 客户端与服务端之间的交互是无状态的,客户端每个请求必须包含理解请求所必需的所有信息

11、网关的主要作用

1、提供统一入口

2、可以进行权限身份认证等安全管理

3、可以根据流量进行限流

4、数据缓存

5、性能监控等

6、异常重试

7、服务降级

12、ATAM架构评估方法的主要过程:

描述和介绍阶段:描述ATAM方法,描述业务动机,描述架构

调查和分析阶段:确定架构方法,生成质量属性效用树,分析架构方法

测试阶段:讨论场景和对场景分级,分析架构方法

最终阶段:描述评估结果

13、数据结构优化

设备信息(设备标识、登记标识、所属用户、设备状态)

设备心跳(设备标识、最后一次心跳时间)

设备异常(设备标识、异常类型、异常发现时间、是否推送)

问题1. 设备与用户间存在多对多的关系,如单个设备既属于社区安防用户,又属于消防站监管。

问题2. 设备状态属于设备动态属性,不应与静态属性混合存储,会增加静态信息表的IO。

问题3. 设备心跳不应只存储最后一次,无法获取全部设备状态。

问题4. 设备异常的推送是否仅单一一个用户一次,如果存在多条推送,则存在一对多的关系。

14、使用MySQL作为数据库,而软件研发团队的架构师却提出要使用由MySQL、HBase和Redis组成的多种多组数据库。请给出适当建议。

技术总监的建议中,MySQL属于关系型数据库,实际应用中一般用来作为操作数据存储。研发架构师提出的HBase和Redis属于NoSQL,实际应用中一般用来做大数据量和高即时性数据存储。该案例属于物联网应用,建议增加NoSQL数据库提高数据存储的容量和即时性。

但是HBase属于列族数据库,不便于关联数据的查询,既降低查询速度,又增加IO操作,建议采用MongoDB替换掉HBase。

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

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

相关文章

设计模式14——组合模式

写文章的初心主要是用来帮助自己快速的回忆这个模式该怎么用,主要是下面的UML图可以起到大作用,在你学习过一遍以后可能会遗忘,忘记了不要紧,只要看一眼UML图就能想起来了。同时也请大家多多指教。 组合模式(Composit…

废物回收机构|基于SprinBoot+vue的地方废物回收机构管理系统(源码+数据库+文档)

地方废物回收机构管理系统 目录 基于SprinBootvue的地方废物回收机构管理系统 一、前言 二、系统设计 三、系统功能设计 1管理员功能模块 2 员工功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍…

【minio】minio文件访问不到问题记录

问题描述: 项目上上传了logo,但是无法回写logo,但是文件minio路径已经返回,并且到minio服务器上也能下载文件; 解决方案: 1.排查Nginx的代理的minio是否正确 2.登录minio服务查一下文件路径policy是否设置访…

在某云服务器上搭建公网kali linux2.0

前提: 可用的 CVM 实例 挂载一个系统盘之外的盘,安装完成后可卸载! 创建实例,安装centos7系统! 然后执行fdisk -l看磁盘的情况 在这里我将把镜像写入vdb这块数据盘 非 root 的情况下记得sudo执行以下命令 注意&…

机器学习之常用算法与数据处理

一、机器学习概念: 机器学习是一门多领域交叉学科,涉及概率论、统计学、计算机科学等多门学科。它的核心概念是通过算法让计算机从数据中学习,改善自身性能。机器学习专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识…

jmeter保存测试计划报错——Couldn‘t save test plan to file:

jmeter保存测试计划报错——Couldnt save test plan to file:。。。。。拒绝访问 一、问题描述二、分析三、结果 一、问题描述 Couldn’t save test plan to file:D:\Program Files\apache-jmeter-5.6.2\bin\线程组.jmx D:\Program Files\apache-jmeter-5.6.2\bin\线程组.jmx(…

用WPS将多张图片生成一个pdf文档,注意参数设置

目录 1 新建一个docx格式的文档 2 向文档中插入图片 3 设置页边距 4 设置图片大小 5 导出为pdf格式 需要把十几张图片合并为一个pdf文件,本以为很简单,迅速从网上找到两个号称免费的在线工具,结果浪费了好几分钟时间,发现需要…

【汽车操作系统】Autosar和商用OS

目录 什么是AUTOSAR? CP AUTOSAR架构 CAN通信 AP AUTOSAR 背景 CP&AP 开发方面的不同: WRLinux介绍 QNX介绍 什么是AUTOSAR? 随着汽车功能越来越多,导致ECU的数量越来越多。1993年的时候,奥迪A8才只有5个ECU现在典型的现代汽车…

shell文本三剑客——awk命令【☆】

目录 一、akw原理 二、命令格式 三、常用变量 四、awk的用法 1.输出整行内容 2.按字段输出文本内容 3.按列输出文件内容 FS变量为列分隔符 4.awk的三个模式 5. awk ‘控制语句条件 {操作}’ 文件 6.awk的数组 7.awk的应用 一、akw原理 逐行读取文本,默认…

TypeScript-泛型

泛型(Generics) 指在定义接口,函数等类型的时候,不预先指定具体的类型,而在使用的时候再指定类型的一种特性,使用泛型可以复用类型并且让类型更加灵活 泛型接口-interface 语法:在 interface 接口类型的名称后面使用…

《基于Jmeter的性能测试框架搭建》改进一

《基于Jmeter的性能测试框架搭建》文末笔者提到了不少待改进之处,如下所示。 Grafana性能图表实时展现,测试过程中需实时截图形成测试报告,不够人性化。解决方案:自动生成测试报告并邮件通知。 Grafana性能图表需测试人员实时监控…

加入MongoDB AI创新者计划,携手MongoDB共同开创AI新纪元

加入MongoDB AI创新者计划! MongoDB对AI创新和初创企业的支持既全面又广泛!无论您是领先的AI初创企业还是刚刚起步,MongoDB Atlas都是支持您愿景的最佳平台。 AI 初创者计划The AI Startup Track AI初创者计划为早期初创企业提供专属福利&…

云端漫步:搭建个人博客的移动云之旅

💂作者简介: Thunder Wang,阿里云社区专家博主,华为云云享专家,腾讯云社区认证作者,CSDN SAP应用技术领域优质创作者。在学习工作中,我通常使用偏后端的开发语言ABAP,SQL进行任务的完…

dmanywhere的docker制作

dmanywhere的docker制作 官网地址: http://www.dmanywhere.cn/ 下载相关执行文件。 Dockerfile的默认命名是“Dockerfile”, 在构建镜像时,如果没有指定Dockerfile文件,Docker通常会寻找名为“Dockerfile”的文件 1.Dockerf…

6款网站登录页(附带源码)

6款网站登录页 效果图及部分源码123456 领取源码下期更新预报 效果图及部分源码 1 部分源码 <style>* {margin: 0;padding: 0;}html {height: 100%;}body {height: 100%;}.container {height: 100%;background-image: linear-gradient(to right, #fbc2eb, #a6c1ee);}.l…

搜索引擎的设计与实现(四)

目录 6 系统测试 6.1测试重要性 6.2测试用例 结 论 参 考 文 献 前面内容请移步 搜索引擎的设计与实现&#xff08;三&#xff09; 免费源代码&毕业设计论文 搜索引擎的设计与实现 6 系统测试 6.1测试重要性 该项目是在本地服务器上进行运行和调试&#xff0c;…

Spring6基础笔记

Spring6 Log4j2 1、概述 1.1、Spring是什么&#xff1f; Spring 是一款主流的 Java EE 轻量级开源框架 &#xff0c;Spring 由“Spring 之父”Rod Johnson 提出并创立&#xff0c;其目的是用于简化 Java 企业级应用的开发难度和开发周期。Spring的用途不仅限于服务器端的开发…

面试准备-八股【面试准备】

面试准备-八股【面试准备】 Java基础解决hash冲突的方法try catch finallyException与Error的包结构OOM你遇到过哪些情况&#xff0c;SOF你遇到过哪些情况线程有哪些基本状态?Java IO与 NIO的区别堆和栈的区别对象分配规则notify()和notifyAll()有什么区别&#xff1f;sleep()…

足球走地全自动化操作软件实现过程

本次采用selenium实现自动化操作的流程 打开浏览器录入账号密码等待数据请求&#xff08;监听&#xff09;有新数据&#xff0c;进行自动化操作通过homeName搜索&#xff0c;找到对应数据找到对应的类型&#xff08;让、大小…&#xff09;找到对应的盘口输入数量提交 附登录…

C#编程-.NET Framework使用工具类简化对象之间的属性复制和操作

在C#编程中&#xff0c;对象之间的属性复制和操作是一个常见的需求。为此&#xff0c;.NET Framework提供了多种实用工具库&#xff0c;如AutoMapper、ValueInjecter和ExpressMapper。这些库通过简化代码&#xff0c;提高了开发效率。本文将介绍这些工具库&#xff0c;比较它们…