文档章节

推荐Java五大微服务器及其代码示例教程

afreon
 afreon
发布于 2017/06/20 11:35
字数 1626
阅读 17
收藏 1

来源:(http://blog.yoodb.com/yoodb/article/detail/1339)

微服务越来越多地用于开发领域,因为开发人员致力于创建更大,更复杂的应用程序,这些应用程序作为较小的服务组合而更好地开发和管理,可将工作在一起,实现更大的应用程序范围的功能。工具正在上升,以满足使用逐块方法思考和构建应用程序的需求,与同时考虑整个应用程序相比。下面本站素文宅博客为大家讲述一下Java五大微服务器,使用这些功能的好处以及相关的代码示例。

什么是微服务 微服务是一种面向服务的架构风格(Java开发人员最重要的技能之一),如小编个人网站素文宅博客http://blog.yoodb.com/ ,其中应用程序被构建为不同的小型服务而不是整个应用程序的集合。您可以使用多个独立的应用程序来独立运行,并且可以使用不同的编码或编程语言来创建。大而复杂的应用程序可以由可自行执行的更简单和独立的程序组成。这些较小的程序组合在一起,以提供大型单片应用程序的所有功能。

微服务捕获用户的业务场景,它通常由只有少数成员的工程团队开发,可以用任何编程语言编写并且可以使用任何框架。每个涉及的程序都是独立版本化,执行和缩放。这些微服务器可以与其他微服务器交互,并且可以具有唯一的URL或名称,同时即使遇到故障时始终可用和一致。

微服务的好处是什么? 使用微服务使得较小的应用程序不依赖于相同的编码语言,开发人员可以使用他们最熟悉的编程语言。这有助于开发人员以更低的成本和更少的错误更快地提出一个程序。灵活性和低成本也可以来自于将这些较小的程序重用于其他项目,从而使其更有效率。

Java的微服务框架示例 可用于开发Java的微服务框架,其中包括如下: Spring Boot:这可能是最好的Java微服务框架,它可以用于反转控制,面向对象编程等语言。 Jersey :开源框架支持Java中的JAX-RS API非常容易使用。 Swagger:帮助用户记录API,并为用户提供开发门户,允许用户测试API。 用户还可以考虑的其他内容包括:Dropwizard,Ninja Web Framework,Play Framework,RestExpress,Restlet,Restx和Spark Framework。

如何使用Microservices With Spring Boot创建 Spring Boot使用户可以通过嵌入式服务器将Java应用程序与自己的应用程序一起使用。不必再使用其他Java EE容器。

Spring Boot项目包括:

  1. Spring IO平台:版本化应用程序的企业级分发
  2. Spring框架:用于事务管理,依赖注入,数据访问,消息传递和Web应用程序
  3. Spring Cloud:用于分布式系统,用于构建或部署您的微服务器
  4. Spring数据:对于与数据访问相关的微服务,无论是映射减少,关系还是非关系
  5. Spring Batch:用于批处理作业等操作
  6. Spring Security:用于授权和身份验证支持
  7. Spring REST文档:用于记录RESTful服务
  8. Spring Social:用于连接社交媒体API
  9. Spring Mobile:适用于移动网络应用

快速搭建Spring Boot框架,详细参考资料http://blog.yoodb.com/yoodb/article/detail/297 ,参考示例代码:

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文档是参考资料:https://stackify.com/soap-vs-rest/ ,而文档资料详情见http://www.oracle.com/splash/java.net/maintenance/index.html 。参考示例代码:

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 非常容易与其他libraries一起使用,如Netty或Grizzly,支持异步连接不需要servlet容器,然而它有一个不依赖注入的实现。

Play Framework Play Framework为用户提供了使用Scala和Java构建,创建和部署Web应用程序的更加简单的方法。Play Framework是RESTful应用程序的理想选择,需要您并行处理远程调用。它也非常模块化,支持异步。Play Framework也是所有微服务框架中最大的社区之一。

参考示例代码:

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和其他主要平台。

参考示例代码:

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";
    }
}

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.xml文件中,使用最新版本的DropWizard添加一个dropwizard.version属性

<properties>
    <dropwizard.version>LATEST VERSION</dropwizard.version>
</properties>
<!--Then list the dropwizard-core library:-->
<dependencies>
    <dependency>
        <groupId>io.dropwizard</groupId>
        <artifactId>dropwizard-core</artifactId>
        <version>${version}</version>
    </dependency>
</dependencies>

Maven项目设置完成后,可以创建配置类,应用程序类,表示类,资源类或运行状况检查,还可以构建Fat JARS,然后运行应用程序。

在此链接中查看Dropwizard用户手册,GitHub地址:https://github.com/dropwizard/dropwizard ,参考示例代码:

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;
    }
}

本文转载自:http://blog.yoodb.com/yoodb/article/detail/1339

共有 人打赏支持
afreon
粉丝 20
博文 41
码字总数 5285
作品 0
海淀
架构师
用 JNI 进行 Java 编程(1)

本教程是关于什么的? Java 本机接口(Java Native Interface (JNI))是一个本机编程接口,它是 Java 软件开发工具箱(Java Software Development Kit (SDK))的一部分。JNI 允许 Java 代码使...

Jerikc
2012/10/08
0
0
Java NIO AsynchronousFileChannel

原文链接 , 原文作者:Jakob Jenkov, 翻译:Neil Hao 在Java 7,AsynchronousFileChannel 被添加到了Java NIO中。使用AsynchronousFileChannel可以实现异步地读取和写入文件数据。 创建一个A...

Neil_Hao
01/20
0
0
使用Java快速入门Thrift

Apache Thrift是一个facebook建立的RPC框架,现在是一个Apache的顶级项目。Thrift允许通过一个跨语言的定义文件的方式定义数据类型和服务接口,这个文件作为RPC客户端和服务器通信的标准,你...

王振威
2012/07/08
0
12
如果你想学习Java,那么就来看这篇文章

一、前言 我是从大二开始学习的Java,当时的目标是Java Web开发,当时并不想考研,所以当时的学习是以就业为主,现在我大三了,学习Java Web开发已经一年了,因为种种原因,决定要考研,所以...

Jivanmoon
08/27
0
0
Java程序员必读书单,家族又添新成员

点击关注异步图书,置顶公众号 每天与你分享IT好书 技术干货 职场知识 参与文末话题讨论,每日赠送异步图书。 ——异步小编 有些革命出其不意地吸引了全世界的眼球。Twitter、Linux操作系统和...

异步社区
05/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSX | SafariBookmarksSyncAgent意外退出解决方法

1. 启动系统, 按住⌘-R不松手2. 在实用工具(Utilities)下打开终端,输入csrutil disable, 然后回车; 你就看到提示系统完整性保护(SIP: System Integrity Protection)已禁用3. 输入reboot回车...

云迹
20分钟前
0
0
面向对象类之间的关系

面向对象类之间的关系:is-a、has-a、use-a is-a关系也叫继承或泛化,比如大雁和鸟类之间的关系就是继承。 has-a关系称为关联关系,例如企鹅在气候寒冷的地方生活,“企鹅”和“气候”就是关...

gackey
今天
1
0
读书(附电子书)|小狗钱钱之白色的拉布拉多

关注公众号,在公众号中回复“小狗钱钱”可免费获得电子书。 一、背景 之前写了一篇文章 《小狗钱钱》 理财小白应该读的一本书,那时候我才看那本书,现在看了一大半了,发现这本书确实不错,...

tiankonguse
今天
1
0
Permissions 0777 for ‘***’ are too open

异常显示: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ......

李玉长
今天
3
0
区块链10年了,还未落地,它失败了吗?

导读 几乎每个人,甚至是对通证持怀疑态度的人,都对区块链的技术有积极的看法,因为它有可能改变世界。然而,区块链技术问世已经10年了,我们仍然没有真正的用上区块链技术。 几乎每个人,甚...

问题终结者
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部