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

news2024/10/7 11:28:16

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.coloradmin.cn/o/1690321.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数组-区间合并

一、题目描述 二、题目思路 这里提供满足基本要求的解题思路: 1.先对列表内按照start大小升序排序,这里创建Comparator接口的实现类,重写compare方法。 2.遍历intervals,设置laststart、lastend两个变量与当前区间相比较&#…

LVGL显示中文字体及其它语言文字详细笔记教程

在前面几篇博客文章中,已经对LVGL的移植和使用进行了较为详细的介绍,在本文中将讲解如何在LVGL的控件中显示中文字体及其它语言字体。 LVGL在VScode中安装模拟器运行配置笔记教程_vscode lvgl-CSDN博客 LVGL移植到STM32 MCU平台详细经验笔记教程-CSDN博…

Day36 代码随想录打卡|二叉树篇---翻转二叉树

题目(leecode T226): 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 方法: 迭代法 翻转二叉树,即从根节点开始,一一交换每个节点的左右孩子节点,然后…

【Linux】-Zookeeper安装部署[17]

简介 apache ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。 除了为Hadoop和H…

程序员做推广?我劝你别干

关注卢松松,会经常给你分享一些我的经验和观点。 这是卢松松会员专区,一位会员朋友的咨询,如果你也有自研产品,但不知道如何推广,一定要阅读本文!强烈建议收藏关注,因为你关注的人,决定你看到的…

【spring】@ControllerAdvice注解学习

ControllerAdvice介绍 ControllerAdvice 是 Spring 框架提供的一个注解,用于定义一个全局的异常处理类或者说是控制器增强类(controller advice class)。这个特性特别适用于那些你想应用于整个应用程序中多个控制器的共有行为,比…

VeraCrypt设置步骤操作说明

一、VeraCrypt软件说明 VeraCrypt是一个开源的磁盘加密软件,是TrueCrypt的继承者和改进版。它提供了强大的数据加密功能,可以对整个磁盘、操作系统分区或移动存储设备进行加密。 二、VeraCrypt软件操作步骤 01)首先在电脑中创建一个新的空…

【论文笔记】| 微调LLM晶体生成

【论文笔记】| 微调LLM晶体生成 Fine-Tuned Language Models Generate Stable Inorganic Materials as Text NYU, ICLR 2024 Theme:Material Generation Main work: 微调大型语言模型以生成稳定的材料 可靠性:在样本结构中,90% …

Python | Leetcode Python题解之第97题交错字符串

题目: 题解: class Solution:def isInterleave(self, s1: str, s2: str, s3: str) -> bool:n1 len(s1)n2 len(s2)if len(s3) ! n1 n2: return Falsedp [[False] * (n2 1) for _ in range(n1 1)] # dp[i][j]表示s1[0:i)和s2[0:j)是否能够构成s…

设计模式5——抽象工厂模式

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

2024年贵州特岗教师招聘报名流程,速速查收哦!

2024年贵州特岗教师招聘报名流程,速速查收哦!

DolphinDB 携手九鞅科技,助力固收投研效能飞跃

随着金融市场开放的广度与深度不断拓宽,金融产品呈现出多样化的发展态势,其中债券投资组合凭借其低风险性、高流动性与稳健的收益表现,逐渐成为投资理财领域备受瞩目的焦点。投资经理不仅需要了解哪些债券值得投资,更要对债券投资…

MySQL日常联系---20万数据的存储过程(一)。

一、创建DDL和DML CREATE TABLE student (id INT PRIMARY KEY AUTO_INCREMENT,createDate DATE NOT NULL,userName VARCHAR(255) NOT NULL,phone VARCHAR(15),age INT,sex CHAR(1), -- 假设M代表男,F代表女introduce TEXT );INSERT INTO student (createDate, user…

二叉树创建与销毁操作详解

目录 一、通过前序遍历的数组构建二叉树 1.1 递归思路 1.2 递归分支图 1.3 递归栈帧图 1.4 C语言实现 二、二叉树的销毁 2.1 递归思路 2.2 递归分支图 2.3 递归栈帧图 2.4 C语言实现 一、通过前序遍历的数组构建二叉树 牛客网链接:二叉树遍历_牛客题霸_牛…

2024年618购物狂欢节即将来袭!精选五款超值入手数码好物!

618购物狂欢盛宴即将落幕,是时候展现我们的购物智慧了!在追求价格优惠的同时,我们更应看重商品的品质与实用性。面对琳琅满目的选择,如何筛选出真正值得拥有的好物呢?为了让大家的购物之旅更加轻松愉快,以下…

想学接口测试,不知道那个工具适合?

引言: 接口测试在软件开发中扮演着至关重要的角色,它可以帮助我们验证系统的功能、性能和安全性。而选择适合的工具是进行接口测试的重要一步。本文将从零开始,为你详细介绍如何选择合适的工具,并提供规范的指导。 一、了解接口…

通过cmd命令行使用用3dmax自带的vray渲染

有时调试需要使用vray渲染vrscene文件看效果,只装有3dmax下可以使用自带vray渲染,在3dmax的渲染日志里面看自带引擎路径 使用命令行进入到此目录 执行命令指定vr文件即可看到效果,如:vray.exe -sceneFile“C:\test15\202405241…

Jetbrain | IDEA的启动logo替换成可爱的vtuber-logo

看了这个,好可爱 【上Github热榜了!当编程语言的Logo变得可爱起来~】 又看了这个 光速整活,强啊 看到很多人整IDEA的logo包括我自己,都不是特别方便的搞,我就直接把文件放在绑定资源里直接下吧 然后直接找到本体的安…

HTML+JavaScript+CSS:爱心代码

1、创建heart.js文件 // 定义画布的宽度和高度,以及画布的中心点坐标 const CANVAS_WIDTH 640; const CANVAS_HEIGHT 480; const CANVAS_CENTER_X CANVAS_WIDTH / 2; const CANVAS_CENTER_Y CANVAS_HEIGHT / 2;// 定义图像的放大因子,用于调整爱心的…

【译】组复制和 Percona XtraDB 集群: 常见操作概述

原文地址:Group Replication and Percona XtraDB Cluster: Overview of Common Operations 在这篇博文中,我将概述使用 MySQL Group Replication 8.0.19(又称 GR)和 Percona XtraDB Cluster 8 (PXC)(基于 Galera&…