What is the difference between Apache ShenYu and Apisix?
What is the difference between ShenYu and Apisix? One of the biggest misconceptions about cloud-based technology is that you can somehow deploy it without having a clue how the technology works. This is not true. In order to be able to deploy successful technologies, you must understand what's going on inside and be able to control, monitor, and manage what is deployed inside your organization's network. So with that in mind, we wanted to talk about two popular technologies that have really caught fire in recent years - Apache ShenYu and Apisix.
ShenYu is a complete, Java-based application server developed by the US Army and now provided by US Government Computer. ShenYu is actually part of the OpenSolaris (OS) distribution and supports both Unix and Windows.
Apisix is an application server that has been developed by one of the most reputable commercial software vendors in China - FUJIFILM Holdings Co. Ltd. Apisix provides a commercial version of the Java Servlet Specification for use in conjunction with the OSGI framework.
Now don't get us wrong. We are not saying that one is better than the other. They are very different technologies and they have their specific uses. You would have to weigh the pros and cons of each before making a decision on which one you want to use. However, we have learned something from working with these technologies over the years that we'd like to share with you in this article.
So, what makes them different? What makes them different enough for you to consider using them? Let's find out together in this ShenYu vs. Apisix article.
If you are looking for something completely different, read our article: What does Apache ShenYu do? If you are looking for some real action, read our article: Why Do I Want to Use Apache ShenYu? ShenYu is used as a means of deploying Java-based services inside your network. The idea is to use it to host various applications such as online ticket sales, point of sale systems, shopping carts, and so on. Some of these applications need to be kept online 24 hours a day. They must always be available so they must be deployed inside your network.
You'll want to use Apache ShenYu for this purpose.
Is Apache Apisix any good?
For what it's worth, I'm a fan of Apache 2.15.
In particular, the following works well for me: httpd.conf (in /etc/httpd) LoadModule authbasicmodule modules/modauthbasic.so LoadModule authdigestmodule modules/modauthdigest.so AuthUserFile /etc/apache2/passwords. AuthGroupFile /etc/apache2/groups. LogFormat "%v %h %l %u %t "%r" %>s %b "%i" "%i"" combined. LogFormat "%h %l %u %t "%r" %>s %b" common. LogFormat "%i -> %U" referer. LogFormat "%i" agent. # Include "modsecurity.conf" at the end of "access.conf" An API gateway, when accessed by the client, will typically forward the HTTP request to some other service. It can be a backend or a microservice but it's generally a service that is external from the client. So when the client calls an API and hits an endpoint, the gateway is called by the client and makes the call to a remote server/service. When we define the API as API Gateway service in Azure, we are basically setting up infrastructure. When we define our API Gateway service, we tell Azure to call our gateway whenever the client makes a request to any of the endpoints within our API. What does this have to do with Azure Functions? From this article (), we understand that we can call a third party service as part of our Azure Function by calling an endpoint in our function's GraphQL schema. In Azure functions, we have a function that is triggered when we call a REST API using Http Trigger. In this function, we can call an endpoint in the same service. This way, we don't need to worry about how to call this service in our function. Azure functions makes this possible using GraphQL queries. This lets us call any endpoint in the same service directly from the function code. We can use any language for the function code. Our function code can even call a Java server. As you can see, we have now two layers for building our function code. In the first layer, we define the structure of our data objects. Then we create a simple function that uses the data as input, outputs some new data, and invokes a third party service that returns the new data. This two-layer approach allows us to focus on designing our data model and build our function without worrying about calling services and returning results. In the second layer, we write the code that will invoke this service and return the data as a response to our client. Our function code doesn't need to know how the service works. As long as we provide the API Gateway with the necessary input parameters and return the corresponding response, our function will work. The only caveat here is that when we call this function, we must pass through the API Gateway.
Include conf/modsecurity.conf # Uncomment to enable logging in apache2 log files. # access.log - BEGIN # access.log - END # error.log - BEGIN # error.log - END # accesslog - BEGIN. # accesslog - END. # auth.log - BEGIN # auth.log - END # authlog - BEGIN. # authlog - END. # Include this config file at the end of the access log file. # LogFormat "%h %l %u %t "%r" %>s %b "%i" "%i"" combined. # ErrorLog "/var/log/apache2/error.log" # CustomLog "/var/log/apache2/access.log" common # CustomLog "/var/log/apache2/log.log" common # CustomLog "/var/log/apache2/other.log" common What does API gateway do?
Related Answers
Is Spring cloud gateway an API Gateway?
I was reading the Spring Cloud gateway document, and I don't unders...
What is the difference between Apache Traffic Server and nginx?
Apache Traffic Server is a web server, as n...
What is cloud-native API gateway?
Here are the top APIs in 2019 Here are the top AP...