0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

java微服务架构有哪些

lhl545545 来源:电子发烧友网 2018-02-09 10:34 次阅读

前言

本文首先简单介绍了微服务的概念以及使用微服务所能带来的优势,然后结合实例介绍了几个常见的Java微服务框架。

微服务在开发领域的应用越来越广泛,因为开发人员致力于创建更大、更复杂的应用程序,而这些应用程序作为微小服务的组合能够更好地得以开发和管理。这些微小的服务可以组合在一起工作,并实现更大、应用更广泛的功能。现在出现了很多的工具来满足使用逐段法而不是一次性地设计和构建应用程序的所有需求。今天,我们来看一下什么是微服务、使用微服务的好处,以及几个代码示例。

java微服务架构有哪些

微服务是什么?

微服务是一种面向服务的架构风格(Java开发人员最重要的技能之一),其中,应用程序被构建为多个不同的小型服务的集合而不是单个应用程序。与单个程序不同的是,微服务让你可以同时运行多个独立的应用程序,而这些独立的应用程序可以使用不同的编码或编程语言来创建。庞大而又复杂的应用程序可以由多个可自行执行的简单而又独立的程序所组成。这些较小的程序组合在一起,可以提供庞大的单程序所具备的所有功能。

微服务捕获了你的业务场景,回答了“你想要试着解决什么问题”这个问题。微服务的开发团队的成员数量比较少,而且可以用任何语言、任何框架进行开发。每个相关的程序都是独立地版本化、执行和扩展。这些微服务可以与其他微服务进行交互,并且具有唯一的URL或名字,同时,即使遇到故障,也能始终保持可用性和一致性。

微服务能带来哪些好处?

使用微服务能带来多个好处,其中有一个好处是,由于这些较小的应用程序无需使用相同的编程语言,因此,开发人员可以使用他们最熟悉的语言。这有助于开发人员用更低的成本和更少的错误来开发程序。灵活性和低成本这两个特点也表现在可以将这些较小的程序重用在其他项目中,从而使其更有效率。

几个Java微服务框架的例子

这里有几个可用于Java开发的微服务框架:

Spring Boot:这可能是最好的Java微服务框架了,它适用于控制反转、面向切面编程等等。

Jersey:这个开源框架支持Java的JAX-RS API,使用起来非常容易。

Swagger:在为你提供开发门户网页的同时,能帮助你生成API文档,以允许用户测试你的API。

你也可以考虑使用其他一些框架,包括:Dropwizard、Ninja Web框架、Play框架、RestExpress、Restlet、Restx和Spark Framework。

如何使用DropWizard来创建微服务

DropWizard将成熟稳定的Java库集成在一个轻量级的包中,你可以在自己的应用程序中使用这个包。它使用了Jetty for HTTP、Jersey for REST和Jackson for JSON,以及Metrics、Guava、Logback、Hibernate Validator、Apache HttpClient、Liquibase、Mustache、Joda Time和Freemarker。

你可以使用Maven来设置Dropwizard应用程序。怎么做呢?

在你的POM文件中,添加一个dropwizard.version属性,值为DropWizard的最新版本。

LATEST VERSION

<--Then list the dropwizard-core library:-->

io.dropwizard

dropwizard-core

${version}

这将为你设置一个Maven项目。在这里,你可以创建配置类、应用程序类、表现类,资源类或一个健康检查,还可以构建Fat JARS,然后运行应用程序。

在此链接中可以查看Dropwizard用户手册,这个链接是GitHub库。

示例代码:

package com.example.helloworld;

import com.yammer.dropwizard.config.Configuration;

import com.fasterxml.jackson.annotation.JsonProperty;

import org.hibernate.validator.constraints.NotEmpty;

public class HelloWorldConfiguration extends Configuration {

@NotEmpty

@JsonProperty

private String template;

@NotEmpty

@JsonProperty

private String defaultName = “Stranger”;

public String getTemplate() {

return template;

}

public String getDefaultName() {

return defaultName;

}

}

Spring Boot微服务

Spring Boot让你可以通过嵌入式服务器将它提供的Java应用程序与你自己的应用程序一起使用。它使用了Tomcat,因此你不必使用其他的Java EE容器。Spring Boot的教程示例可以访问这里。

你可以在这里找到所有的Spring Boot工程,你会发现Spring Boot拥有你的应用程序所需的所有基础架构。无论你是在编写安全类、配置类或是大数据类的应用程序,总能找到对应的Spring Boot工程。

Spring Boot的工程包括:

- Spring IO Platform:用于版本化应用程序的企业级分发。

- Spring Framework:用于事务管理、依赖注入、数据访问、消息传递和Web应用程序。

- Spring Cloud:用于分布式系统,用于构建或部署你的微服务。

- Spring Data:用于与数据访问相关的微服务,不管是映射还是归约,关系型还是非关系型。

- Spring Batch:用于高级别的批量操作。

- Spring Security:用于授权和认证支持。

- Spring REST文档:用于RESTful服务文档化。

- Spring Social:用于连接社交媒体API。

- Spring Mobile:适用于移动网络应用。

示例代码:

import org.springframework.boot.*;

import org.springframework.boot.autoconfigure.*;

import org.springframework.stereotype.*;

import org.springframework.web.bind.annotation.*;

@RestController

@EnableAutoConfiguration

public class Example {

@RequestMapping(“/”)

String home() {

return “Hello World!”;

}

public static void main(String[] args) throws Exception {

SpringApplication.run(Example.class, args);

}

}

Jersey

Jersey RESTful框架是开源的,它基于JAX-RS规范。Jersey应用程序可以扩展现有的JAX-RS实现,并通过添加功能和实用工具,使得RESTful服务更为简单,客户端开发变得更加轻松。

Jersey最好的一点是,它的文档很详细,有很多例子。它的速度很快,路由也非常简单。

关于如何开始使用Jersey的文档在这里,而更多的文档可以在这里找到。

你可以尝试运行下面的示例代码:

package org.glassfish.jersey.examples.helloworld;

import javax.ws.rs.GET;

import javax.ws.rs.Path;

import javax.ws.rs.Produces;

@Path(“helloworld”)

public class HelloWorldResource {

public static final String CLICHED_MESSAGE = “Hello World!”;

@GET

@Produces(“text/plain”)

public String getHello() {

return CLICHED_MESSAGE;

}

}

Jersey可以很容易地与其他库一起使用,如Netty或Grizzly,它支持异步连接。它不需要servlet容器。然而,它确实很粗鲁地依赖注入实现。

Play框架

Play框架可以让你很方便地使用Scala和Java来构建、创建和部署Web应用程序。对于需要并行处理远程调用的RESTful应用程序来说,Play框架是理想的选择。它是模块化的,支持异步。Play框架的社区也是所有微服务框架中最大的社区之一。

你可以尝试运行下面的示例代码:

package controllers;

import play.mvc.*;

public class Application extends Controller {

public static void index() {

render();

}

public static void sayHello(String myName) {

render(myName);

}

}

Restlet

Restlet可以帮助开发人员创建遵循RESTful架构模式的快速而又可扩展的Web API。它具有不错的路由和过滤功能,可用于Java SE/EE、OSGi、Google AppEngine(Google Compute的一部分)、Android和其他主要的平台。

由于它的社区是封闭的,因此Restlet的学习曲线比较陡峭,但是你可以从StackOverflow上获得帮助。

示例代码:

package firstSteps;

import org.restlet.resource.Get;

import org.restlet.resource.ServerResource;

/**

* Resource which has only one representation.

*/

public class HelloWorldResource extends ServerResource {

@Get

public String represent() {

return “hello, world”;

}

}

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
收藏 人收藏

    评论

    相关推荐

    Java微服务随机掉线排查过程简析

    我们的业务共使用 11 台(阿里云)服务器,使用 SpringcloudAlibaba 构建微服务集群, 共计 60 个微服务, 全部注册在同一个 Nacos 集群。
    的头像 发表于 01-13 17:41 530次阅读
    <b class='flag-5'>Java</b><b class='flag-5'>微服务</b>随机掉线排查过程简析

    游戏公司不使用微服务架构的原因

    微服务基本只有 request/response 的模式。做不了 streaming?微服务通常要求应用是无状态的才能做到水平扩展。streaming 本身就是加入了状态
    的头像 发表于 12-29 11:18 206次阅读

    如何搭建微服务架构的全局图景

    如果一直保持共用数据库的模式,则整个架构会越来越僵化,失去了微服务架构的意义。因此小明和小红一鼓作气,把数据库也拆分了。所有持久化层相互隔离,由各个服务自己负责。另外,为了提高系统的实
    的头像 发表于 12-27 15:16 241次阅读
    如何搭建<b class='flag-5'>微服务</b><b class='flag-5'>架构</b>的全局图景

    如何构建弹性、高可用的微服务

    基于微服务的应用程序可实现战略性数字转型和云迁移计划,对于开发团队来说,这种架构十分重要。那么,如何来构建弹性、高可用的微服务呢?RedisEnterprise给出了一个完美的方案
    的头像 发表于 11-26 08:06 229次阅读
    如何构建弹性、高可用的<b class='flag-5'>微服务</b>?

    设计微服务架构的原则

    微服务是一种软件架构策略,有利于改善整体性能和可扩展性。你可能会想,我的团队需不需要采用微服务,设计微服务架构有哪些原则?本文会给你一些灵感
    的头像 发表于 11-26 08:05 226次阅读
    设计<b class='flag-5'>微服务</b><b class='flag-5'>架构</b>的原则

    docker微服务架构实战

    随着云计算和容器化技术的快速发展,微服务架构在软件开发领域中变得越来越流行。微服务架构将一个大型的软件应用拆分成多个小型的、独立部署的服务
    的头像 发表于 11-23 09:26 308次阅读

    springcloud微服务架构

    Spring Cloud是一个开源的微服务架构框架,它提供了一系列工具和组件,用于构建和管理分布式系统中的微服务。它基于Spring框架,旨在通过简化开发过程和降低系统复杂性来帮助开发人员构建弹性
    的头像 发表于 11-23 09:24 368次阅读

    深入探讨微服务和事件驱动架构区别

    微服务不同,事件驱动架构不要求强制的粒度。事件处理器可以有不同的规模,可以是响应特定事件的小型功能,也可以是处理多个事件的大型子系统。在物流系统中,事件驱动架构可以包括用于包裹跟踪更新的小型事件处理器,也可以有更大的子系统用于
    的头像 发表于 10-30 15:06 254次阅读

    Spring Cloud :打造可扩展的微服务网关

    Spring Cloud Gateway是一个基于Spring Framework 5和Project Reactor的反应式编程模型的微服务网关。它提供了丰富的功能,包括动态路由、请求限流、集成安全性等,使其成为构建微服务架构
    的头像 发表于 10-22 10:03 256次阅读
    Spring Cloud :打造可扩展的<b class='flag-5'>微服务</b>网关

    SpringCloud微服务架构:实现分布式系统的无缝协作

    在深入Spring Cloud之前,让我们首先了解一下什么是微服务架构微服务架构是一种软件架构模式,将一个应用程序拆分为一组小型、独立的
    的头像 发表于 10-12 16:21 257次阅读
    SpringCloud<b class='flag-5'>微服务</b><b class='flag-5'>架构</b>:实现分布式系统的无缝协作

    边缘计算微服务操作系统的设计与实现

    面对边缘计算运行环境不统一、适配难,工业边缘计算微服务开发难度高,微服务生态系统碎片化,以及工业边缘计算行业应用难以落地等技术和行业共性问题,本文实现了一种边缘计算微服务操作系统,包括边缘计算
    的头像 发表于 08-31 16:49 595次阅读
    边缘计算<b class='flag-5'>微服务</b>操作系统的设计与实现

    【Spring Cloud 】基于微服务架构的智慧工地监管平台源码带APP

    技术架构微服务 开发语言:Java 开发工具:Idea 前端框架:Vue 后端框架:Spring Cloud 数 据 库:MySql 移 动 端:UniApp
    的头像 发表于 08-28 11:10 361次阅读
    【Spring Cloud 】基于<b class='flag-5'>微服务</b><b class='flag-5'>架构</b>的智慧工地监管平台源码带APP

    释放微服务架构全部潜力的关键

      释放微服务的力量 您是否正在努力构建高效、可扩展且有弹性的软件系统?作为软件开发人员或高级开发人员,您一定遇到过“微服务架构”一词。这种革命性的软件开发方法已被许多成功的科技巨头采用,例如
    的头像 发表于 06-25 11:54 324次阅读
    释放<b class='flag-5'>微服务</b><b class='flag-5'>架构</b>全部潜力的关键

    微服务架构中的数据一致性解决方案与实践

    作为互联网公司的研发工程师,微服务架构思想对于各位读者朋友来说,已经不是陌生东西。我们当中的大多数人,或多或少经历过从单体应用到微服务化的系统拆分和演进过程。我们按照庞大系统的业务功能和特征,将其
    的头像 发表于 06-14 10:20 278次阅读
    <b class='flag-5'>微服务</b><b class='flag-5'>架构</b>中的数据一致性解决方案与实践

    从分层架构微服务架构介绍(五)

    本文要介绍的是 服务架构 (Service-Based Architecture, SBA )。 SBA 可以看成是单体架构微服务架构
    的头像 发表于 05-10 17:02 585次阅读
    从分层<b class='flag-5'>架构</b>到<b class='flag-5'>微服务</b><b class='flag-5'>架构</b>介绍(五)