gigya / microdot Goto Github PK
View Code? Open in Web Editor NEWMicrodot: An open source .NET microservices framework
License: Apache License 2.0
Microdot: An open source .NET microservices framework
License: Apache License 2.0
Team,
Do you any documentation over Load balancing? If not, could you please give a high level flow.
Thanks
Can you strongly type your assemblies?
Problem: There might be a need to change cache TTLs for specific methods in deployed services (e.g. production) via configuration, or to disable them outright. After modifying the Caching proxy to support TTL per method, there isn't any way to configure it.
Problem: Similarly, devs want to be able to define individual timeouts per service method. For example, methods that rely on DB will be allowed longer timeouts.
Proposed solution: Add a new configuration that allows changing both the request and caching TTLs and disabling the caching for any specific method. This configuration should reside close to service discovery configuration. This implies we could define per-client TTLs.
looking at our stats looks like the network time is unjustified long, for example, a random query of one minute:
target.service | target.method | MAX(stats.network.time) |
---|---|---|
UserIdService | TryGetUserIds | 665.7730102539062 |
PolicyService | GetEffectiveSitePolicy | 132.62899780273438 |
SitesService | GetSite | 230.61199951171875 |
other stats of the service doesn't indicate any issues so I was searching for some time-consuming logic between
RequestStartTimestamp marking and the actually httpClient.PostAsync and I have some concerns about this piece of code:
microdot/Gigya.Microdot.ServiceProxy/ServiceProxyProvider.cs
Lines 177 to 223 in 9bdf40c
in case of ServerCertificateVerification or ClientCertificateVerification configured, this lock contains inside the certificate loading which can take time, and we are syncly blocking any attempts to call the service which probably the intention, but what happens to the thread during this lock?
is it possible that async cache refresh is "syncly" waiting for this lock?
microdot/Gigya.Microdot.ServiceProxy/Caching/AsyncCache.cs
Lines 300 to 314 in 9bdf40c
in case of an unreachable error or any type of 'HTTP request exception', we are repeating the process but with tryHttps=false, I'm not sure I completely understood the flow, this is what I see:
creating a client for HTTPS:
after the request is failing, creating a client for HTTP:
microdot/Gigya.Microdot.ServiceProxy/ServiceProxyProvider.cs
Lines 211 to 214 in 9bdf40c
in the next call, we are trying HTTPS again and creating a new client:
if the time fits we are creating two more clients for the reachability checks
microdot/Gigya.Microdot.ServiceProxy/ServiceProxyProvider.cs
Lines 194 to 200 in 9bdf40c
after the request is failing, creating a new client for HTTP, and so on and so on
Where is the best place to ask about microdot?
Looks like it a bit confusing and not self-discoverable, see gigya/microdot-samples#2
Hello!
I wanted to know whether you plan supporting .NET Core soon.
Thanks!
How to avoid hot grain? 10,000 request/s
As the title says.
A violation against the OSS Rules of Play has been detected.
Rule ID: rl-reuse_tool-1
Explanation: Does README mention REUSE? No
Find more information at: https://sap.github.io/fosstars-rating-core/oss_rules_of_play_rating.html
Currently when compiling Microdot, the compiler give 26 warnings. These should be fixed or suppressed.
The DispatchProxy class was copied from the .NET Core sources into the Gigya.Microdot.ServiceProxy project a long time ago, and is no longer synchronized with the latest release by Microsoft.
The official NuGet is available here:
https://www.nuget.org/packages/System.Reflection.DispatchProxy
Hi,
We have an up coming requirement in doing MicroServices in .NET core 2.0. What is the time line by which the .NET core port will be available.
Thanks and regards
Venkatesh
I downloaded source code of Microdot and I tried to compile solution.
I got exception while paket tries to download Gigya.OrleansDashboard.NetStandard 3.0.8.
Here is message:
Downloading Gigya.OrleansDashboard.NetStandard 3.0.8
Source 'http://nuget.gigya.net/nugetForVS/nuget' exception: System.Exception: Could not retrieve data from 'http://nuget.gigya.net/nugetForVS/nuget/FindPackagesById()?semVerLevel=2.0.0&id='Gigya.OrleansDashboard.NetStandard'' ---> System.Net.Http.HttpRequestException: An error occurred while sending the request. ---> System.Net.WebException: The remote name could not be resolved: 'nuget.gigya.net'
at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
at System.Net.Http.HttpClientHandler.GetResponseCallback(IAsyncResult ar)
--- End of inner exception stack trace ---
at [email protected](Exception _arg1)
at [email protected](AsyncParams1 args) --- End of inner exception stack trace --- at [email protected](Exception _arg3) at [email protected](AsyncParams
1 args)
Something went wrong while downloading Gigya.OrleansDashboard.NetStandard 3.0.8
Message: Could not download Gigya.OrleansDashboard.NetStandard 3.0.8.
I was able to work with version 3.0.5. My currently downloaded version is 3.1.6.
A violation against the OSS Rules of Play has been detected.
Rule ID: rl-assigned_teams-2
Explanation: Does it have an admin team on GitHub? No
Find more information at: https://sap.github.io/fosstars-rating-core/oss_rules_of_play_rating.html
the namespace Gigya.Microdot.ServiceDiscovery
class ConsulClient
line: 494
var endpoints = nodes.Select(ep => new ConsulEndPoint { HostName = ep.Node.Name, Port = ep.Service.Port, Version = GetEndpointVersion(ep) }).OrderBy(x => x.HostName).ThenBy(x => x.Port).ToArray();
why HostName = ep.Node.Name and not ep.Node.Address or ep.Service.Address?
A violation against the OSS Rules of Play has been detected.
Rule ID: rl-assigned_teams-3
Explanation: Does it have enough admins on GitHub? No
Find more information at: https://sap.github.io/fosstars-rating-core/oss_rules_of_play_rating.html
I have downloaded the GpuService
sample, and then change some Environments, but got some error running GpuService.Client
// an empty file loadPaths.json
Environment.SetEnvironmentVariable("GIGYA_CONFIG_ROOT", @"D:\test\dotnet\microdot-samples\GpuService\");
Environment.SetEnvironmentVariable("ENV", "dev");
// consul
Environment.SetEnvironmentVariable("CONSUL", "127.0.0.1:8500");
consul service defination
{
"service": {
// can not find a way to change service name(default to GpuService-)
"name": "GpuService-dev",
"port": 10000
}
}
errors
System.AggregateException: One or more errors occurred. ---> Gigya.Common.Contra
cts.Exceptions.EnvironmentException: Query not exists on Consul. See tags for de
tails.; requestedService=GpuService-dev, consulAddress=http://127.0.0.1:8500/, r
equestTime=0001-01-01 00:00:00.000, requestLog=, responseLog=, queryDefined=Fals
e, consulError=
is there any documents i can refer to?
like the title
I have tried to build the package with VS2015 and VS2017.
In both cases many errors.
What I am doing wrong?
I am new to microdot. I am trying to run sample inventory service.
I managed it after a while. Now I am trying to run the inventory service client, but I got exception at startup. I have no idea why.
Here is what I got:
System.NullReferenceException
HResult=0x80004003
Message=Object reference not set to an instance of an object.
Source=Gigya.Microdot.ServiceProxy
StackTrace:
at Gigya.Microdot.ServiceProxy.ServiceProxyProvider.GetConfig()
at Gigya.Microdot.ServiceProxy.ServiceProxyProvider.d__80.MoveNext()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Gigya.Microdot.ServiceProxy.ServiceProxyProvider.d__79.MoveNext()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.GetResult()
at InventoryService.Client.FortuneCookieTrader.d__10.MoveNext() in D:\Limos\Downloads\microdot-samples-master\microdot-samples-master\InventoryService\InventoryService.Client\FortuneCookieTrader.cs:line 31
This exception was originally thrown at this call stack:
[External Code]
InventoryService.Client.FortuneCookieTrader.Start() in FortuneCookieTrader.cs
Framework should be move to a modern platform to be in alignment with Orleans 1.5
Is there any complete Documentation to cover all features provided by framework?
We're considering using this framework as it would provide more structure to our project but it does not seems really maintained.
DId you migrate to dotnet core?
Is it possible to use microdot with .NET Core 2.0 instead of Framework 4.7?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.