精华内容
下载资源
问答
  • JAVA微服务技术

    2020-04-08 16:33:11
    JAVA微服务技术

    1. 基础架构

    组件 技术
    基本技术 SpringBoot
    注册中心 Eureka、Consul、Zookeeper、Nacos、etcd
    配置中心 Diamond、Archaius、Apollo、SpringCloud Config
    服务通信 Feign、Ribbon
    服务网关 SpringCloud Gateway、zuul
    服务熔断 Hystrix、Envoy
    安全鉴权 SpringCloud Security、JWT、OAuth2
    链路追踪 Zipkin、Brave、Dapper
    日志监控 logback、ELK
    消息驱动 SpringCloud Stream、Kafka
    消息总线 SpringCloud Bus
    API Swagger
    Devops Jenkins、Docker、Git、Kubernetes、Harbor

    2. 注册中心

    角色:

    • 服务提供者
    • 服务消费者
    • 注册中心

    CAP原则又称CAP定理,指的是在一个分布式系统中, Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可得兼。

    Eureka Consul Zookeeper Nacos etcd
    CAP AP CP CP AP CP
    健康检查 keep alive TCP/HTTP/gRPC/Cmd keep alive TCP/HTTP/MYSQL/keep alive keep alive
    KV存储 支持 支持 支持
    访问协议 HTTP HTTP/DNS TCP HTTP/DNS HTTP/grpc
    SpringCloud集成 支持 支持 支持 支持 支持
    Dubbo集成 支持 支持
    K8S集成 支持 支持
    展开全文
  • 微服务技术栈 Author: HuiFer Description: 该文简单介绍微服务技术栈有哪些分别用来做什么 技术栈 微服务开发 作用: 快速开发服务. Spring SpringMvc SpringBoot 官网,Spring目前是JavaWeb开发人员必不可少...

    微服务技术栈

    • Author: HuiFer
    • Description: 该文简单介绍微服务技术栈有哪些分别用来做什么

    技术栈

    微服务开发

    作用: 快速开发服务.

    • Spring
    • SpringMvc
    • SpringBoot

    官网,Spring目前是JavaWeb开发人员必不可少的一个框架,SpringBoot简化了Spring开发的配置目前也是业内主流开发框架.

    微服务注册发现

    作用: 发现服务,注册服务.集中管理服务

    Eureka

    • Eureka Server : 提供服务注册服务,各个节点启动后,会在Eureka Server中进行注册.
    • Eureka Client : 简化与Eureka Server的交互操作
    • Spring Cloud Netflix : GitHub,文档

    Zookeeper

    • ZooKeeper is a centralized service for maintaining configuration information, naming, providing distributed synchronization, and providing group services.

      zookeeper是一个集中的服务,用于维护配置信息、命名、提供分布式同步和提供组服务.

    • GitHub

    Zookeeper 和 Eureka 区别

    1. Zookeeper保证CP , Eureka 保证AP
      • C-数据一致性;A-服务可用性;P-服务对网络分区故障的容错性,这三个特性在任何分布式系统中不能同时满足,最多同时满足两个.

    微服务配置管理

    作用:统一管理一个或多个服务的配置信息,集中管理.

    Disconf

    • Distributed Configuration Management Platform(分布式配置管理平台) ,它是专注于各种分布式系统配置管理 的通用组件/通用平台, 提供统一的配置管理服务,是一套完整的基于zookeeper的分布式配置统一解决方案.

    • GitHub

    SpringCloudConfig

    Apollo

    • Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景.

    • GitHub

    权限认证

    作用:根据系统设置的安全规则或者安全策略,用户可以访问而且只能访问自己被授权的资源,不多不少.

    Spring Security

    apache Shiro

    Apache Shiro™ is a powerful and easy-to-use Java security framework that performs authentication, authorization, cryptography, and session management. With Shiro’s easy-to-understand API, you can quickly and easily secure any application – from the smallest mobile applications to the largest web and enterprise applications.

    批处理

    作用: 批量处理同类型数据或事物

    Spring Batch

    定时任务

    作用: 定时做什么.

    Quartz

    微服务调用(协议)

    通讯协议

    Rest

    • 通过HTTP/HTTPS发送Rest请求进行数据交互

    RPC

    • Remote Procedure Call
    • 它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议.RPC不依赖于具体的网络传输协议,tcp、udp等都可以.

    gRPC

    • 官网
    • A high-performance, open-source universal RPC framework
      所谓RPC(remote procedure call 远程过程调用)框架实际是提供了一套机制,使得应用程序之间可以进行通信,而且也遵从server/client模型.使用的时候客户端调用server端提供的接口就像是调用本地的函数一样.

    RMI

    • Remote Method Invocation
    • 纯Java调用

    服务接口调用

    作用: 多个服务之间的通讯

    Feign(HTTP)

    • Spring Cloud Netflix 的微服务都是以 HTTP 接口的形式暴露的,所以可以用 Apache 的 HttpClient 或 Spring 的 RestTemplate 去调用,而 Feign 是一个使用起来更加方便的 HTTP 客戶端,使用起来就像是调用自身工程的方法,而感觉不到是调用远程方法.

    • GitHub

    服务熔断

    作用: 当请求到达一定阈值时不让请求继续.

    Hystrix

    • Hystrix is a latency and fault tolerance library designed to isolate points of access to remote systems, services and 3rd party libraries, stop cascading failure and enable resilience in complex distributed systems where failure is inevitable.

    • GitHub

    Sentinel

    • A lightweight powerful flow control component enabling reliability and monitoring for microservices. (轻量级的流量控制、熔断降级 Java 库)

    • GitHub

    服务的负载均衡

    作用:降低服务压力,增加吞吐量

    Ribbon

    • Spring Cloud Ribbon是一个基于HTTP和TCP的客户端负载均衡工具,它基于Netflix Ribbon实现

    • GitHub

    Nginx

    • Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务

    • GitHub

    Nginx 与 Ribbon区别

    1. Nginx 属于服务端负载均衡,Ribbon属于客户端负载均衡.Nginx作用与Tomcat,Ribbon作用与各个服务之间的调用(RPC)

    消息队列

    作用: 解耦业务,异步化处理数据

    Kafka

    RabbitMQ

    RocketMQ

    activeMQ

    日志采集(elk)

    作用:收集各服务日志提供日志分析、用户画像等

    Elasticsearch

    Logstash

    Kibana

    API网关

    作用:外部请求通过API网关进行拦截处理,再转发到真正的服务

    Zuul

    Zuul is a gateway service that provides dynamic routing, monitoring, resiliency, security, and more.

    服务监控

    作用:以可视化或非可视化的形式展示出各个服务的运行情况(CPU、内存、访问量等)

    Zabbix

    Nagios

    Metrics

    服务链路追踪

    作用:明确服务之间的调用关系

    Zipkin

    Brave

    数据存储

    作用: 存储数据

    关系型数据库

    MySql
    Oracle
    MsSql
    PostgreSql

    非关系型数据库

    Mongodb
    Elasticsearch

    缓存

    作用: 存储数据

    redis

    分库分表

    作用: 数据库分库分表方案.

    shardingsphere

    Mycat

    服务部署

    作用: 将项目快速部署、上线、持续集成.

    Docker

    Jenkins

    Kubernetes(K8s)

    Mesos

    展开全文
  • 后期做医疗大数据分析后,各个模块迅速膨胀,给管理和部署带来了很大挑战,为了完善微服务体系公司从18年底19年初决定升级框架为spirngcloud全家桶,经比对采用了spirngcloud alibaba的大体系,本博客详细介绍。

    目录

    1. 微服务技术介绍 

    2. 微服务开发注意事项    

    3. 本公司技术选型    

    4.  代码结构


    1. 微服务技术介绍 

          常用的微服务技术有两大类:springboot+duboo、springcloud全家桶(zuul+fegin+hystrix+config+eureka+zipkin等常用组件)

          dubbo采用rpc的调用模式,从速度还是操作上都完胜feign,但dubbo终是一个模块调用组件而已,难以扛起微服务管理的大旗,不适用于中小企业。所以本篇主要讲述springcloud.

         springcloud国内用的最多的主要是原生springcloud、springcloud alibaba。作为spirngcloud的加强版springcloud alibaba目前看无疑是优秀的,它不但集成了springcloud的原生美,也完美兼容了自己体系下的dubbo调用、nexus注册中心、gateway网关。随着hystrix的停止更新,zuul等部分组件需要有替代性方案,此时的gateway显得更加耀眼。相比springcloud config的模块开发,nacos的注册中心采用统一的配置提供了便捷的导入导出更符合复杂项目环境的灵活管理。下图贴一下原生springcloud与springcloud abibaba重要组件的对比:

    2. 微服务开发注意事项    

           微服务的设计需要注意以下几点:

          1)避免夸库事务,夸库事务一直是各大公司最头疼的难题,至今也无完美的解决方案,以后可能能从数据库底层机制得到解决。

           2)尽量避开具体的IP,各个模块通过往注册中心注册自己的地址,实现互联互通,也就是要合理使用网关。IP地址的强绑定会给后期的部署带来很大麻烦,不利于微服务模块的快速部署。IP地址的强绑定也不利于统一接口管理,统一限流,统一验权。gateway网关、zull网关都能很好解决这块的弊端。

           3) 代码与配置文件分离,代码+配置文件即可部署为一套环境

           4) 稳定性保障体系,微服务模块众多,涉及人员众多,怎么去更快的发现问题、定位问题、解决问题是微服务的一大挑战。目前公司多少采用日志+监控结合具体场景的机制确保微服务的安全运行。

    3. 本公司技术选型    

           所在公司是一家项目化的产品,做出的产品需要部署到各大医院,结合本公司的使用场景,以及前面提到的springcoud组件对比及微服务注意事项,我的技术选型是采用gateway网管+nacos注册中心+nacos配置中心+fegin client模块间调用组件+springboot admin监控+zipkin链路跟踪+elk的日志体系。具体我也是参考了下图,各大springcloud组件对比过程中确定此图列举的各项技术方案是适用的也是合理的。我仅替换了skywalking,skywalking监控全面细致,无入侵性监控也更符合企业需要,但我们是项目化交付,只想通过链路监控获取每次访问的时间与成败,所以选择了更轻量的zipkin

     

    (图片来源于https://gitee.com/ibyte/M-Pass)

    4.  代码结构

    系统模块:

    •      sys   ------系统模块
    •              sys-gateway      -----网关模块
    •              sys-monitor       -----监控模块
    •              sys-auth            -----权限校验
    •              sys-api              -----系统接口模块
    •              sys-common     -----网关模块

     业务模块1

    •     p-ma                          ------后台管理
    •             p-ma-api            ------ 接口模块
    •             p-ma-client         ------ 客户端调用模块
    •             p-ma-producer    ------ 生产者模块

    业务模块2

    •     p-ma                          ------后台管理
    •             p-ma-api            ------ 接口模块、客户端调用模块
    •             p-ma-producer    ------ 生产者模块
    展开全文
  • 目前比较成熟的 JAVA 微服务生态包括 servicecomb(华为), spring-cloud (Pivotal), dubbo(阿里), tsf(腾讯)等。gRPC、Thrift 等也用于内部服务之间的通信,但是微服务基础设施比较欠缺。 核心的微服务基础...

    微服务生态

        微服务生态本质上是一种微服务架构模式的实现,包括微服务开发SDK,以及微服务基础设施。

       目前比较成熟的 JAVA 微服务生态包括 servicecomb(华为), spring-cloud (Pivotal), dubbo(阿里), tsf(腾讯)等。gRPC、Thrift 等也用于内部服务之间的通信,但是微服务基础设施比较欠缺。

        核心的微服务基础设施包括:注册中心、配置中心、应用网关。此外,分布式事物管理、计划任务、调用链跟踪系统等也是微服务基础设施的组成部分。完整的微服务基础实施还包括开发使能工具,包括接口管理工具、灰度发布管理、代码生成等,这部分主要由云厂商提供,比较少开源方案。

        微服务生态的核心是 SDK,而 SDK 的核心是 RPC 框架,这个是不同微服务生态的本质区别。在基础设施方面,不同的微服务生态是可以相互选择的,比如 spring-cloud 生态可以采用 spring-cloud-huawei 接入servicecomb 提供的注册中心 servicecomb-service-center、配置中心 servicecomb-kie,也可以通过 spring-cloud-alibaba 接入阿里的配置中心;servicecomb 也可以通过引入扩展,使用其他的配置中心。一些基础的开发组件,比如 spring、spring boot,这些微服务开发 SDK 都支持集成。

     

        对微服务生态进行比较是一个很难的课题。下面的表格仅对一些核心功能进行比较。使能工具、核心基础设施、可选基础设施等方面,不同的微服务生态是可以相互使用的,这里的比较只针对该生态原生提供的来说,并不代表某个微服务生态缺少这块功能,该生态的开发者用不了这方面的能力。对于开源生态应该采用一个大生态的眼光来看待,每个生态的设计者也会尽可能融入其他生态,继承和复用其他生态的能力。但是在商业选型上,需要考虑技术支持等因素。

     

         对微服务生态的比较的另外一个视角就是如何构建微服务应用架构。 一般的微服务应用架构会包括应用网关、业务微服务和静态页面。静态页面的部署相对比较灵活,可以放到应用网关内部,也可以放到应用网关,还可以放到应用网关外面。其中放到网关里面的方式最灵活,比如可以通过配置网关的负载均衡策略,将请求转发到用户最近的region,也可以对部分静态页面进行访问控制。

        增加应用网关可以增强应用系统的弹性,能够支撑系统的持续演进(参考分析文章),同时可以结合网络基础设施,更好的实现应用系统的能力开放。比如如果接入层使用 API Gateway 挂载,可以很好的实现内部系统的能力开放和计费;使用LVS接入,只可以提高转发性能,比较适合访问量大的应用,接入网关逻辑少,应用网关可以弹性扩容;使用DNS则对于网站很有用,屏蔽用户访问的地址差异,并且可以使用DNS将请求转发到不同区域的应用网关。

        Servicecomb, spring-cloud 都能够很好的支持这种架构,而 dubbo 对这种架构支持的不是很好,很多 dubbo 开发者都是通过在业务服务之外增加一个接入层,使用 spring-cloud 的应用网关来搭建这个应用架构。

     

    多云微服务架构的两种方案

    采用开源微服务框架

        很多业务系统的构建,都是从选择一个开源方案开始。 一般会首先选择一个微服务开发 SDK, 然后选择其他的微服务基础设施。 对于自主研发的情况,微服务基础设施也会选择开源方案。 比如选择 ServiceComb 微服务开发 SDK 的场景,可以通过在不同的云上部署开源服务,来实现一套系统,多个云上运行。 云厂商如果存在微服务基础设施的商业版本, 可以在云上购买使用, 使用云产商提供的基础设施服务,通常可以降低自己运维的成本,并能够得到更好的性能优化和可靠性支持。

     

       另外一个开源解决方案是部分集成云产商提供的组件,尽可能多的使用云产商的基础设施。 比如选择 Spring Cloud 微服务解决方案, 可以使用 spring-cloud-huawei, spring-cloud-alibaba 等云产商提供的扩展,使用云上的基础设施。

     

        下面对开源解决方案的评估点做一个总结:

        1. 只需要维护一套代码和熟悉一个开发框架,多云运行。不同云的运行体验存在差异,可以部分使用云厂商的中间件。 如果其他云没有对应的中间件,需要自行安装和维护中间件。

        2. 微服务框架选型之前,需要考虑“基础设施”是否也开源。比如微服务基础设施最重要的中间件“配置中心”、“注册中心”和“应用网关”。开源可获得性是一套代码,多云运行的前提。 

    适配多供应商开发框架

         每个云产商都存在一个主打的微服务开发框架, 使用主打微服务开发框架能够最好使用云产商提供的微服务基础设施。 为了在不同的云上, 获得最佳的微服务管理能力,需要尽可能使用对应云的主打框架。 但是维护多套代码是困难的。 适配多供应商的开发框架, 需要对核心业务做好分离,避免重复开发,然后将适配层做薄,只实现简单适配,降低开发难度。 大部分 JAVA 微服务开发框架都支持 Spring, 因此可以采用下面的设计模式,实现一套核心代码,编译成多个云产商开发框架的可执行程序的多云版本。 

     

    上图是一个微服务的内部结构,一个微服务可能包含如下几个目录:

    * application-core

    * application-runtime-servicecomb

    * application-runtime-hsf

    下面对适配多供应商开发框架方案的评估点做一个总结:

    1. 需要做好业务抽象,并熟悉多个开源微服务开发框架,相对于开源自建方案维护成本高。

    2. 不需要考虑自行安装和维护基础中间件的问题,云厂商自己的微服务框架,一般针对这个框架提供了各种中间件支持,使用和接入开发成本低。

    3.  这种方案是优秀代码架构设计。在开源方案中,也建议做好核心业务逻辑分离和接口抽象,每个方案适配不同云厂商非微服务基础设施(比如数据库、对象存储、EI等功能)也都是需要的。

    点击这里→了解更多精彩内容

    展开全文
  • 本课程带领大家集成微服务项目中,常用的技术框架,熟练掌握后在未来的三到五年时间里,技术都不会落后
  • java微服务测试 随着Java开发中微服务的广泛普及以及DevOps运动的影响力日益增强,测试Java应用程序从未如此复杂。 用于单片应用程序的测试策略开发人员需要进行调整,以适应微服务的现实。 此外,基于微服务的应用...
  • java微服务

    2021-07-27 19:39:27
    java微服务 1. Nginx反向代理 2. 有状态登录与无状态登录开发思想 3. 单点登陆系统设计(SSO) 4. Spring Security 安全框架应用 5. JWT生成用户Token技术
  • Java微服务实战

    2019-10-09 08:47:50
    Java微服务实战-pdf 最近在看java微服务找到了这本pdf版的,分享一下 本书分为三部分:基础框架篇(1~6章)、服务框架篇(7~10章)、监控部署篇(11~13章),由浅入深来讲解微服务的相关技术。基础框架篇从微服务...
  • 对于经常在网上阅读文章的许多开发人员来说,许多组织都希望从当前的整体Java应用程序应用程序迁移(或扩充),这不足为奇。 对与错,微服务架构已经成为实现基于Web的应用程序的事实上的最佳样式。 但是,微服务...
  • Java微服务.part1

    2017-03-16 15:28:18
    Java微服务》帮助你用Java构建供企业使用的微服务架构,内容包括微服务核心概念和框架、大型软件项目的高层次设计、开发环境设置和前期配置、对微服务架构持续集成的部署、实现微服务的安全性、有效地执行测试、...
  • Java 微服务框架选型

    千次阅读 2019-04-24 11:54:23
    Java 微服务框架选型(Dubbo 和 Spring Cloud?) 微服务(Microservices)是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务...
  • 2019Java微服务架构2.0

    万人学习 2019-08-02 16:04:56
    全网最新《微服务架构2.0》课程旨在推动并普及微服务架构思想,技术选型紧跟阿里系开源生态方案及服务网格等技术,规范微服务开发流程,让您真正体会互联网微服务开发的独特魅力。 本视频教程为之前《微服务解决复杂...
  • Java微服务架构

    万次阅读 多人点赞 2018-07-07 15:13:58
    微服务架构的技术选型 (1)微服务实例的开发:SpringBoot (2)服务的注册与发现:Spring Cloud Eureka (3)负载均衡:Spring Cloud Ribbon (4)服务容错:Spring Cloud Hystrix (5)API网关:Spring ...
  • 《小马哥Java微服务实践 springcloud视频教程》小马哥java视频教程,提到微服务架构,一定少不了的是springboot与springcloud技术,本视频围绕着整个微服务体系展开讲解,从实践中真正的掌握微服务Java视频教程目录...
  • Java微服务原理

    2019-11-15 14:15:43
    课程介绍(一线互联网架构师亲授 单体架构之项目概要设计&数据表设计 单体架构之Springboot工程框架搭建与技巧 ...单体架构之房产和推荐功能开发(分页组件、Ajax、Redis) ...微服务架构之SpringCloud...
  • 本课程从单体应用模型的问题为切入点,以理论配合实战的方式带领大家了解微服务架构的魅力。扣丁学堂Java技术交流群693610150 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
  • 【Java面试系列】Java微服务面试题

    万次阅读 2020-05-01 10:01:05
    1.微服务 面试题 1、您对微服务有何了解? 2、微服务架构有哪些优势? 3。微服务有哪些特点? 4、设计微服务的最佳实践是什么? 5、微服务架构如何运作? 6、微服务架构的优缺点是什么? 7、单片,SOA 和...
  • 2019年7月最新Java微服务资料

    千次阅读 2019-07-19 17:24:33
    2019年7月最新Java微服务资料
  • 你有了解过Java微服务吗?知道什么是微服务架构吗?微服务架构是一种架构风格和架构思想,在传统软件应用架构的基础上,将系统业务按照功能拆分为更细的服务。拆分的每一个服务都是一个独立的应用,...
  • JAVA微服务性能调优高并发技术分布式专题教程价值一万元的就业班全套视频 springcloud,dubbo,等等100G内容,架构师教程。
  • Java的学习中,微服务是很多程序员都要学习的内容,今天分享黑马程序员最新有关于微服务的学习视频。 超全面讲解Spring Cloud Alibaba技术栈 配套资料:https://pan.baidu.com/s/1eJKgsbedh0C8hDHAFMVaYQ提取码...
  • 随着微服务Java开发中的广泛应用以及DevOps运动的影响力日益增强,测试Java应用程序从未如此复杂。 用于单片应用程序的测试策略开发人员需要进行调整,以适应微服务的现实。 此外,基于微服务的应用程序有望提高...
  • 本文,我们将和大家分享13个可靠的Java微服务架构 1、Spring Boot Java构建Spring应用程序已经有很长一段时间了,Spring Boot是Spring的一个特定版本,它通过对配置细节的处理,使微服务构建更加简便。创建...
  • Java微服务框架选型

    千次阅读 2020-01-10 11:36:02
    微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间相互协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务和服务之间采用轻量级的通信机制相互沟通(通常是基于...
  • Java微服务面试题整理

    2020-02-11 19:54:30
    微服务 面试题 1、您对微服务有何了解? 2、微服务架构有哪些优势? 3。微服务有哪些特点? 4、设计微服务的最佳实践是什么? 5、微服务架构如何运作? 6、微服务架构的优缺点是什么? 7、单片,SOA 和微服务...
  • 要在如今快节奏的开发环境中取得成功, 利用容器技术和DevOps实践 来构建并持续交付微服务非常重要。 作为Java开发人员, ...Java微服务应用程序部署到Kubernetes集群。 MicroProfile,是为了帮助 JavaEE
  • 热门的13个Java微服务框架

    千次阅读 2019-02-01 16:47:54
    本文,我们将和大家分享13个可靠的Java微服务架构 1、Spring Boot Java构建Spring应用程序已经有很长一段时间了,Spring Boot是Spring的一个特定版本,它通过对配置细节的处理,使微服务构建更加简便。创建Spring .....
  • 2016年有一个统计说,两千家企业里,30%在使用微服务,15%在实验开发和测试微服务架构,24%在学习微服务准备转型,只有剩下的30%的企业没有使用微服务微服务到底有什么好呢?微服务在2013年才被提出,短短几年就...
  • Java微服务2021面试题整理

    千次阅读 2021-02-25 22:43:02
    1、您对微服务有何了解? 微服务,又称微服务 架 构,是一种架构风格,它将应用程序构建为以业务领域为模型的小型自治服务集合 。 通俗地说,你必须看到蜜蜂如何通过对齐六角形蜡细胞来构建它们的蜂窝状物。他们...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 96,555
精华内容 38,622
关键字:

java微服务技术

java 订阅