zoukankan      html  css  js  c++  java
  • 推荐Java五大微服务器及其代码示例教程

    来源素文宅博客: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和SparkFramework。

    如何使用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;
        }
    }
  • 相关阅读:
    IntelliJ IDEA常用的快捷键积累总结
    Linux命令(六)之防火墙iptables的相关操作以及端口的开放
    Linux命令(五)之service服务查找、启动/停止等相关操作
    Linux命令(四)之常用文件拷贝/移动,文件解压缩,文件查找等相关的操作
    Linux命令(三)vim编辑器的常用命令
    Linux命令(一)之目录结构、Linux终端操作、关机重启等一些基本操作
    zookeeper核心知识与投票机制详解
    zuul开发实战(限流,超时解决)
    IO多路复用技术详解
    Linux五大网络IO模型图解
  • 原文地址:https://www.cnblogs.com/MrYoodb/p/7120002.html
Copyright © 2011-2022 走看看