首页 > 编程知识 正文

java微服务和分布式,javaspring微服务面试题

时间:2023-05-03 12:05:08 阅读:237684 作者:4376

项目中如何区分两个数据源

1、注解。2、包名、分模块

高并发解决方案

业务数据库 -》 数据水平分割(分区分表分库)、读写分离、SQL优化

数据缓存

业务应用 -》 逻辑代码优化(算法优化)、

代码不要又循环。代码重构。

应用服务器 -》 反向静态代理、配置优化、负载均衡(apache分发,多tomcat实例)

系统环境:JVM调优

页面优化:减少页面连接数、页面尺寸瘦身

1、动态资源和静态资源分离;

2、CDN;

3、负载均衡;

4、分布式缓存;

5、数据库读写分离或数据切分(垂直或水平);

6、服务分布式部署。

前后端分离是如何做的

参考:

实现前后端分离的心得

微服务哪些框架

SpringCloud、Dubbo、Hsf等

分布式和微服务区别

微服务是分服务,分布式是分项目。

为什么把系统服务化

做服务化的好处,就是把共同的代码抽取出来做成接口,方便别人调用。拓展,重复使用。

微服务与SOA的区别 SOA实现微服务架构实现企业级,自顶向下开展实施团队级,自定向上开展实施服务由多个子系统组成一个系统被拆分成多个服务集成式服务(esb、ws、soap)集成方式简单(http、rest、json)

可以把微服务当做去除了ESB的SOA。ESB是SOA架构中的中心总线,设计图形应该是星形的,而微服务是去中心化的分布式软件架构。

SOA

SOA的提出是在企业计算领域,就是要将紧耦合的系统,划分为面向业务的,粗粒度,松耦合,无状态的服务。服务发布出来供其他服务调用,一组互相依赖的服务就构成了SOA架构下的系统。

基于这些基础的服务,可以将业务过程用类似BPEL流程的方式编排起来,而BPEL反映的是业务处理的过程,这些过程对于业务人员更为直观,调整也比hardcode的代码更容易。

当然企业还需要对服务治理,比如服务注册库,监控管理等。

我们知道企业计算领域,如果不是交易系统的话,并发量都不是很大的,所以大多数情况下,一台服务器就容纳将许许多多的服务,这些服务采用统一的基础设施,可能都运行在一个应用服务器的进程中。虽然说是面向服务了,但还是单一的系统。

微服务

而微服务架构大体是从互联网企业兴起的,由于大规模用户,对分布式系统的要求很高,如果像企业计算那样的系统,伸缩就需要多个容纳续续多多的服务的系统实例,前面通过负载均衡使得多个系统成为一个集群。

但这是很不方便的,互联网企业迭代的周期很短,一周可能发布一个版本,甚至可能每天一个版本,而不同的子系统的发布周期是不一样的。

而且,不同的子系统也不像原来企业计算那样采用集中式的存储,使用昂贵的Oracle存储整个系统的数据,二是使用MongoDB,HBase,Cassandra等NOSQL数据库和Redis,memcache等分布式缓存。

那么就倾向采用以子系统为分割,不同的子系统采用自己的架构,那么各个服务运行自己的Web容器中,当需要增加计算能力的时候,只需要增加这个子系统或服务的实例就好了,当升级的时候,可以不影响别的子系统。这种组织方式大体上就被称作微服务架构。

微服务与SOA相比,更强调分布式系统的特性,比如横向伸缩性,服务发现,负载均衡,故障转移,高可用。互联网开发对服务治理提出了更多的要求,比如多版本,比如灰度升级,比如服务降级,比如分布式跟踪,这些都是在SOA实践中重视不够的。

Docker容器技术的出现,为微服务提供了更便利的条件,比如更小的部署单元,每个服务可以通过类似Node.js或Spring
Boot的技术跑在自己的进程中。可能在几十台计算机中运行成千上万个Docker容器,每个容器都运行着服务的一个实例。随时可以增加某个服务的实例数,或者某个实例崩溃后,在其他的计算机上再创建该服务的新的实例。

什么是SOA?为什么要采用SOA与SOAP区别是什么?

SOA是一种面向服务架构(面相接口),是将相同业务逻辑抽取出来组成单独服务。提供接口,暴露出来让别的系统调用。

把大系统分成小系统,通过该RPC远程调用。

SOAP是WebService面向服务协议, 采用xml,因为比较中,现在不是特别流行。

RPC远程调用有哪些框架?

SpringCloud、Dubbo、Dubbox、Hessian、HttpClient、thrift等。

什么是RPC远程调用?

RPC的目的是让你在本地调用远程的方法,而对你来说这个调用是透明的,你并不知道这个调用的方法是部署哪里。通过RPC能解耦服务,这才是使用RPC的真正目的。

RPC 的全称是 Remote Procedure Call 是一种进程间通信方式。
它允许程序调用另一个地址空间(通常是共享网络的另一台机器上)的过程或函数,而不用程序员显式编码这个远程调用的细节。即无论是调用本地接口/服务的还是远程的接口/服务,本质上编写的调用代码基本相同。

比如两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数或者方法,由于不在一个内存空间,不能直接调用,这时候需要通过就可以应用RPC框架的实现来解决

Docker容器服务编排利器详解Java设计模式之代理模式怎么实现怎么用Javascript实现拖拽排序效果

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。